Docker Hub là gì?
Docker Hub là kho lưu trữ trên cloud dành cho cộng đồng Docker để lưu trữ, chia sẻ và phân phối Docker Image. Các Docker Image này sau khi chạy sẽ trở thành container, bên trong bao gồm tất cả các source code phần mềm cần thiết, thời gian chạy, thư viện, biến môi trường và tệp cấu hình để dễ dàng triển khai một ứng dụng trong Docker. Docker Hub là một registry lớn nhất sử dụng để lưu trữ Docker Image
Docker Hub là một nơi tuyệt vời để chúng ta có thể chia sẻ những Docker Image, những bản build của mình cho người dùng trên Internet. Việc sử dụng Docker Hub rất tiện lợi là một điều không cần bàn cãi. Tuy nhiên, cũng giống Github là một nơi chia sẻ code online, Docker Hub cũng ẩn chứa rất nhiều các secret, những thông tin nhạy cảm, cái mà không nên public ra, ảnh hưởng đến bảo mật.
Source code có mối liên kệ chặt chẽ với các thông tin nhạy cảm/bí mật, nhưng đây không phải là nơi duy nhất có thể rò rỉ thông tin nhạy cảm. Docker Image là một nguồn có thể bị rò rỉ thông tin nhạy cảm mà chúng ta thường hay bỏ qua (ít nhất là với tôi).
Có bao nhiêu bí mật đã được phơi bày?
Theo nghiên cứu của CyberNews họ đã thực hiện phân tích 10.178 Docker Image được chia sẻ công khai trên Docker Hub, và họ đã phát hiện ra rằng có ít nhất 5.493 Docker Image (54%) chứa các thông tin bí mật hay thông tin nhạy cảm. Các image này đã được tải xuống hơn 132 tỷ lần bởi người dùng trên nền tảng phổ biến này.
“That means that exposed secrets could be running on multiple servers around the globe, posing risks and draining cloud resources from inconspicuous Docker Hub contributors. Leaving any secrets exposed while uploading your images online poses a high risk of threat actors finding them”, cảnh báo đến từ Vincentas Baubonis - Researcher Cybernews.
Qua hình ảnh trên ta có thể thấy được phần lớn thông tin bị lộ là Github Token, bên cạnh đó có cả Datagod Token, các URI private, PrivateKey, …
Một nghiên cứu khác tới từ RWTH Aachen University của Đức cho thấy, với 28.621 Docker images được đem ra phân tích, trong đó phát hiện ra 52.107 private keys hợp lệ, và 3.158 API secrets (bao gồm các API key của cloud, financial, IoT, …)
Hầu hết các secrets bị lộ, khoảng 95% private key và 90% API key nằm trong các Docker Images của người dùng bình thường tải lên => thông tin này là lỗi người dùng vô tình đẩy lên, làm lộ chúng.
Một vài ví dụ về lộ thông tin trên Docker Hub
Hardcoded secrets
Truyền giá trị vào ENV vẫn là cách đơn giản nhất để có thể bị lộ thông tin. Những secret key, API key, … này được hardcode dưới dạng biến môi trường (ENV), đối số (ARG) hoặc thậm chí là một phần của lệnh RUN.
Có rất nhiều secret được truyền vào trong ENV
Hay trong ARG của Docker Image
Sao chép file cấu hình nhạy cảm vào trong Docker Image
Đơn giản là vẫn giống việc sử dụng hardcode secret, chỉ khác là giờ đây chúng ta lưu vào file mà thôi, chỉ cần đọc file config là có thể lấy được kha khá thông tin nhạy cảm
Có nhiều tình huống để chúng ta vô tình làm việc này như:
- copy credentials file aws tại ~/.aws/credentials
- copy GCP service-account keys
- copy SSH keys để clone repositories
- vân vân …
Và nhiều trường hợp, người dùng nghĩ việc copy secret vào từ bước 1, rồi xoá ở bước 2, bước 3. Tuy nhiên chúng ta hoàn toàn có thể đọc được secret đó ngay từ bước 1 mà không cần chờ đến bước 3 sau khi bị xoá.
Thêm toàn bộ git repo
Một lỗi khác là người dùng tự thêm toàn bộ git repo vào trong Docker Image, sử dụng lệnh ADD . .
hay COPY . .
có thể thêm toàn bộ (bao gồm cả thư mục .git
vào trong Docker Image. Trong thư mục .git
có rất nhiều thông tin nhạy cảm của người dùng như thông tin người dùng, các lịch sử chỉnh sửa của repo, các thông tin bí mật khác, …
Lộ giấy phép phần mềm trả phí
Có nhiều Image có phần mềm được kích hoạt ngay trong container, tiện phục vụ cho việc sử dụng ngay. Việc licence rõ ràng là thông tin nhạy cảm. Đôi khi có một số phần mềm thậm chí không được cung cấp công khai.
Tham khảo
- https://redhuntlabs.com/blog/scanning-millions-of-publicly-exposed-docker-containers-thousands-of-secrets-leaked/
- https://www.bleepingcomputer.com/news/security/thousands-of-images-on-docker-hub-leak-auth-secrets-private-keys/
- https://arxiv.org/pdf/2307.03958.pdf
- https://redhuntlabs.com/blog/scanning-millions-of-publicly-exposed-docker-containers-thousands-of-secrets-leaked/