19% Docker image phổ biến nhất không có mật khẩu root

Thứ Bảy tuần trước, ngày 18 tháng XNUMX, Jerry Gamblin của Kenna Security đã kiểm tra 1000 hình ảnh phổ biến nhất từ ​​Docker Hub dựa trên mật khẩu gốc mà chúng sử dụng. Trong 19% trường hợp nó trống rỗng.

19% Docker image phổ biến nhất không có mật khẩu root

Nền với dãy núi Alps

Lý do cho nghiên cứu nhỏ này là Báo cáo về lỗ hổng Talos xuất hiện vào đầu tháng này (TALOS-2019-0782), các tác giả trong số đó - nhờ phát hiện ra Peter Adkins từ Cisco Umbrella - đã báo cáo rằng hình ảnh Docker với bản phân phối vùng chứa Alpine phổ biến không có mật khẩu gốc:

“Các phiên bản chính thức của hình ảnh Docker Linux của Alpine (kể từ v3.3) chứa mật khẩu NULL cho người dùng root. Lỗ hổng này là kết quả của một hồi quy được giới thiệu vào tháng 2015 năm XNUMX. Ý chính của vấn đề này là các hệ thống được triển khai với các phiên bản Alpine Linux có vấn đề trong một vùng chứa và sử dụng Linux PAM hoặc cơ chế khác sử dụng tệp bóng hệ thống làm cơ sở dữ liệu xác thực có thể chấp nhận mật khẩu NULL cho người dùng root.”

Các phiên bản hình ảnh Docker có Alpine được kiểm tra sự cố đều bao gồm 3.3–3.9, cũng như bản phát hành Edge mới nhất.

Các tác giả đã đưa ra khuyến nghị sau cho người dùng bị ảnh hưởng:

“Tài khoản root phải bị vô hiệu hóa rõ ràng trong các hình ảnh Docker được xây dựng từ các phiên bản Alpine có vấn đề. Khả năng khai thác lỗ hổng này phụ thuộc vào môi trường, vì sự thành công của nó đòi hỏi một dịch vụ hoặc ứng dụng được chuyển tiếp bên ngoài bằng cách sử dụng Linux PAM hoặc cơ chế tương tự khác."

Vấn đề là loại bỏ trong các phiên bản Alpine 3.6.5, 3.7.3, 3.8.4, 3.9.2 và edge (ảnh chụp nhanh 20190228) và chủ sở hữu các hình ảnh bị ảnh hưởng đã được yêu cầu nhận xét về dòng có root trong /etc/shadow hoặc đảm bảo gói bị thiếu linux-pam.

Tiếp tục với Docker Hub

Jerry Gamblin quyết định tò mò về “mức độ phổ biến của việc sử dụng mật khẩu null trong vùng chứa”. Vì mục đích này ông đã viết một bài viết nhỏ Kịch bản Bash, bản chất của nó rất đơn giản:

  • thông qua yêu cầu cuộn tới API trong Docker Hub, danh sách các hình ảnh Docker được lưu trữ ở đó sẽ được yêu cầu;
  • thông qua jq nó được sắp xếp theo trường popularity, và từ kết quả thu được còn lại một nghìn đầu tiên;
  • đối với mỗi người trong số họ nó được đáp ứng docker pull;
  • đối với mỗi hình ảnh nhận được từ Docker Hub được thực thi docker run bằng cách đọc dòng đầu tiên từ tập tin /etc/shadow;
  • nếu giá trị của chuỗi bằng root:::0:::::, tên ảnh sẽ được lưu vào một file riêng.

Chuyện gì đã xảy ra thế? TRONG tập tin này Có 194 dòng ghi tên các Docker image phổ biến với hệ thống Linux, trong đó người dùng root không đặt mật khẩu:

“Trong số những cái tên nổi tiếng nhất trong danh sách này là govuk/ Governmentpaas, Hashicorp, Microsoft, Monsanto và Mesosphere. Và kylemanna/openvpn là vùng chứa phổ biến nhất trong danh sách, số liệu thống kê của nó có tổng cộng hơn 10 triệu lượt kéo.”

Tuy nhiên, cần nhớ lại rằng bản thân hiện tượng này không có nghĩa là có lỗ hổng trực tiếp về tính bảo mật của các hệ thống sử dụng chúng: tất cả phụ thuộc vào cách chúng được sử dụng chính xác như thế nào (xem bình luận từ trường hợp Alpine ở trên). Tuy nhiên, chúng ta đã thấy “đạo đức của câu chuyện” nhiều lần: sự đơn giản rõ ràng thường có nhược điểm, điều này phải luôn được ghi nhớ và hậu quả của nó phải được tính đến trong các kịch bản ứng dụng công nghệ của bạn.

PS

Đọc thêm trên blog của chúng tôi:

Nguồn: www.habr.com

Thêm một lời nhận xét