Lỗ hổng Docker Sandboxes nghiêm trọng cho phép mã độc thoát máy ảo, đọc và sửa đổi tệp tin máy chủ macOS

Mã độc chạy bên trong máy ảo Docker Sandboxes trên macOS có thể thoát khỏi thư mục dự án được chia sẻ để đọc hoặc thay đổi tệp tin bất kỳ trên máy chủ. Lỗ hổng CVE-2026-77179 được xếp hạng Nghiêm trọng, ảnh hưởng đến các phiên bản từ 0.28.0 đến trước 0.42.0 và đã được Docker khắc phục.
Docker Sandboxes macOS Vulnerability

Mã độc chạy bên trong máy ảo Docker Sandboxes trên hệ điều hành macOS có thể thoát khỏi thư mục dự án được chia sẻ và đọc hoặc thay đổi các tệp tin ở bất kỳ đâu trên máy chủ, Docker đã đưa ra cảnh báo trong một thông báo an ninh vào ngày 15 tháng 9.

Hành động thoát khỏi máy ảo (escape) này chạy với quyền của tài khoản máy chủ đang vận hành máy ảo. Lỗ hổng mang mã hiệu CVE-2026-77179, được xếp hạng Nghiêm trọng (Critical), ảnh hưởng đến các phiên bản từ 0.28.0 đến dưới 0.42.0 trên macOS, và đã được khắc phục trong phiên bản 0.42.0 vào ngày 7 tháng 9.

Docker Sandboxes vận hành mỗi AI coding agent trong một máy ảo nhỏ riêng biệt với thư mục dự án được chia sẻ vào bên trong. Mã độc có thể thoát ra chính là bất cứ thứ gì chạy bên trong máy ảo đó, chẳng hạn như một coding agent bị kẻ tấn công kiểm soát hoặc bất kỳ phần mềm độc hại nào mà agent đó cài đặt và thực thi.

Docker chưa ghi nhận bất kỳ trường hợp khai thác thực tế nào. Đánh giá bổ sung của CISA trên hồ sơ CVE cũng liệt kê tình trạng khai thác là "none" (không có), và lỗ hổng này hiện không nằm trong danh mục Các lỗ hổng bị khai thác phổ biến (KEV) của CISA tính đến ngày 16 tháng 9.

Để khai thác, lỗ hổng cần có mã độc bên trong sandbox, trong khi mục tiêu của sandbox chính là bảo vệ máy chủ khỏi những gì agent thực thi. Agent cài đặt các gói phần mềm và chạy các lệnh với quyền sudo bên trong máy ảo. Tài liệu về cách ly (isolation) của Docker nêu rõ rằng ranh giới hypervisor "là cơ chế kiểm soát cách ly, không phải sự phân tách đặc quyền bên trong VM."

Docker cho biết, hành động thoát khỏi máy ảo thực hiện thông qua máy chủ lưu trữ virtio-fs – phía máy chủ của quá trình chia sẻ tệp tin giữa Mac và máy ảo – vốn đã thực hiện theo các symlink (liên kết tượng trưng) khi mở lại một tệp đã bị xóa từ một đường dẫn được lưu trữ.

Một "guest" (khách), tức là bất kỳ thứ gì chạy bên trong máy ảo, có thể thay thế một thư mục cha bằng một symlink, sau đó đọc hoặc thay đổi các tệp tin với tư cách là người dùng VMM (tài khoản máy chủ vận hành trình giám sát máy ảo), Docker cảnh báo điều này "có khả năng dẫn đến việc thực thi mã trên máy chủ."

Tài liệu của Docker từ tháng 3 đã khẳng định rằng các symlink trỏ ra ngoài workspace (thuật ngữ của Docker cho thư mục dự án được chia sẻ) sẽ không được thực hiện theo.

Lỗ hổng thứ hai: CVE-2026-79994

Cùng bản phát hành này cũng khắc phục lỗ hổng thứ hai mang mã hiệu CVE-2026-79994, được Docker xếp hạng Cao (High) với điểm CVSS là 8.7. Lỗ hổng này nằm trong bộ chuyển tiếp (relay) cho phép sandbox kết nối với các Unix domain socket trong phạm vi workspace được ủy quyền.

Bộ chuyển tiếp sẽ kiểm tra xem đường dẫn socket có nằm trong workspace hay không, sau đó kết nối lại bằng tên đường dẫn đó. Một guest thay thế một thư mục dọc theo đường dẫn đó bằng một symlink trong khoảng thời gian giữa lúc kiểm tra và lúc kết nối có thể khiến máy chủ kết nối với bất kỳ AF_UNIX socket nào bên ngoài workspace. Docker cho biết điều này sẽ "làm lộ dữ liệu hoặc các khả năng phía máy chủ được cung cấp bởi socket đó."

Lỗ hổng này ảnh hưởng đến các phiên bản từ 0.37.0 đến 0.41.9, nhưng không ảnh hưởng đến bản 0.42.0. Docker liệt kê lỗ hổng đầu tiên chỉ dành cho macOS nhưng không nêu rõ nền tảng cho lỗ hổng thứ hai, trong khi Docker Sandboxes có thể chạy trên macOS, Windows và Linux. Đánh giá của CISA cũng liệt kê lỗ hổng này chưa bị khai thác thực tế.

Các phiên bản bị ảnh hưởng và hướng dẫn cài đặt

CVE Thành phần Phiên bản bị ảnh hưởng Nền tảng Xếp hạng Docker
CVE-2026-77179 virtio-fs host server 0.28.0 đến trước 0.42.0 macOS Critical, CVSS 9.4
CVE-2026-79994 Guest-to-host Unix socket relay 0.37.0 đến trước 0.42.0 Không nêu rõ High, CVSS 8.7
  • Cập nhật lên phiên bản 0.42.0 hoặc mới hơn. Tính đến ngày 17 tháng 9, bản phát hành mới nhất là 0.43.0, xuất bản vào ngày 15 tháng 9.
  • Nếu bạn chưa thể cập nhật ngay, hãy sử dụng clone mode và tránh thêm các mount host có quyền đọc-ghi. Đây là lời khuyên của Docker cho cả hai lỗ hổng.

Theo mặc định, lệnh sbx run chia sẻ thư mục hiện tại vào sandbox với quyền đọc và ghi. Chế độ Clone mode chỉ hoạt động khi dự án là một kho lưu trữ Git và được thiết lập khi sandbox được tạo; do đó, sandbox hiện có phải được xóa đi và tạo lại với tham số --clone.

Clone mode bảo vệ kho lưu trữ khỏi các thay đổi, nhưng không ngăn được việc đọc. Kho lưu trữ được gắn (mount) ở chế độ chỉ đọc tại /run/sandbox/source, và các tệp không được theo dõi (untracked) như .env vẫn có thể đọc được bên trong sandbox, theo tài liệu của Docker.

Docker đã công bố các hồ sơ CVE và khuyến cáo vào ngày 15 tháng 9, tám ngày sau khi phiên bản 0.42.0 được tung ra.

Ghi chú phát hành 0.42.0 trên GitHub và trang tài liệu của Docker không nêu tên cụ thể của hai mã lỗi CVE này tính đến ngày 17 tháng 9. Trong số các bản sửa lỗi định kỳ, họ liệt kê một bản sửa lỗi cho trường hợp "một tiến trình bị đóng gói (sandboxed) có thể khiến daemon mở một phương tiện vận chuyển D-Bus của máy chủ và thực thi một lệnh tùy ý trên máy chủ." Docker chưa liên kết bản sửa lỗi đó với bất kỳ CVE nào ở trên.

Hồ sơ cho CVE-2026-79994 ban đầu liệt kê 0.41.0 là phiên bản được khắc phục đầu tiên, nhưng Docker sau đó đã đính chính thành 0.42.0 khoảng một giờ sau khi công bố hồ sơ vào ngày 15 tháng 9.

Docker gửi lời cảm ơn đến Oren Yomtov từ accomplish.ai vì đã phát hiện ra CVE-2026-77179 và Jurre van Bergen từ ThreatNotify vì đã phát hiện ra CVE-2026-79994.

Vào tháng 4, Cyera Research Labs từng mô tả cách một coding agent bị tấn công prompt-injection bên trong sandbox dựa trên Docker có thể bị lừa để khai thác một lỗ hổng Docker Engine riêng biệt nhắm vào máy chủ lưu trữ.