Lỗ hổng Sandbox Escape trong Judge0 có thể bị tấn công

 


 Nhiều lỗ hổng bảo mật nghiêm trọng đã được tiết lộ trong hệ thống thực thi mã nguồn mở Judge0 có thể bị khai thác để thực thi mã trên hệ thống đích.

Ba lỗ hổng, tất cả đều nghiêm trọng về bản chất, cho phép "kẻ thù có đủ quyền truy cập để thực hiện thoát hộp cát và có được quyền root trên máy chủ", công ty an ninh mạng Úc Tanto Security cho biết trong mộtbáo cáo được công bố hôm nay.

Judge0 (phát âm là "judge zero") được các nhà bảo trì mô tả là một "hệ thống thực thi mã trực tuyến mạnh mẽ, có thể mở rộng và mã nguồn mở" có thể được sử dụng để xây dựng các ứng dụng yêu cầu các tính năng thực thi mã trực tuyến như đánh giá ứng viên, học trực tuyến và trình soạn thảo mã trực tuyến và IDE.

Theo trang web của mình, dịch vụ này được sử dụng bởi 23 khách hàng như AlgoDaily, CodeChum và PYnative, trong số những người khác. Dự án đã được phân nhánh 412 lần trên GitHub cho đến nay.

Các lỗ hổng, được phát hiện và báo cáo bởi Daniel Cooper vào tháng 3 năm 2024, được liệt kê dưới đây -

  • CVE-2024-28185 (điểm CVSS: 10.0) - Ứng dụng không tính đến các liên kết tượng trưng được đặt bên trong thư mục hộp cát, có thể được kẻ tấn công tận dụng để ghi vào các tệp tùy ý và thực thi mã bên ngoài hộp cát.
  • CVE-2024-28189 (điểm CVSS: 10.0) - Một bản vá bỏ qua cho CVE-2024-28185 bắt nguồn từ việc sử dụng lệnh UNIX chown trên một tệp không đáng tin cậy trong hộp cát. Kẻ tấn công có thể lạm dụng điều này bằng cách tạo một liên kết tượng trưng (liên kết tượng trưng) đến một tệp bên ngoài hộp cát, cho phép kẻ tấn công chạy chown trên các tệp tùy ý bên ngoài hộp cát.
  • CVE-2024-29021 (điểm CVSS: 9.1) - Cấu hình mặc định của Judge0 khiến dịch vụ dễ bị thoát khỏi hộp cát thông qua Giả mạo yêu cầu phía máy chủ (SSRF). Điều này cho phép kẻ tấn công có đủ quyền truy cập vào API Judge0 để thực thi mã unsandbox dưới dạng root trên máy đích.

Vấn đề bắt nguồn từ một tập lệnh Ruby có tên là "isolate_job.rb", chịu trách nhiệm thiết lập sandbox, cũng như chạy mã và lưu trữ kết quả thực thi.

Cụ thể, nó đòi hỏi phải tạo một liên kết tượng trưng trong thư mục trước khi tập lệnh bash được thiết lập để thực thi chương trình dựa trên ngôn ngữ gửi sao cho nó cho phép ghi vào một tệp tùy ý trên hệ thống không có hộp cát.

Một tác nhân đe dọa có thể tận dụng lỗ hổng này để ghi đè lên các tập lệnh trên hệ thống và thực thi mã bên ngoài sandbox và trên bộ chứa Docker chạy tác vụ gửi.

Hơn nữa, kẻ tấn công có thể leo thang các đặc quyền của chúng bên ngoài bộ chứa Docker do nó được chạy bằng cờ đặc quyền như được chỉ định trong docker-compose.yml.

Mặt khác, CVE-2024-29021 liên quan đến cấu hình cho phép giao tiếp với cơ sở dữ liệu PostgreSQL của Judge0 có sẵn bên trong mạng Docker nội bộ, do đó cho phép đối thủ vũ khí hóa SSRF để kết nối với cơ sở dữ liệu và thay đổi kiểu dữ liệu của các cột có liên quan và cuối cùng đạt được lệnh tiêm.

Sau khi tiết lộ có trách nhiệm, những thiếu sót đã được giải quyết trong phiên bản 1.13.1 được phát hành vào ngày 18 tháng 4 năm 2024. Người dùng Judge0 nên cập nhật lên phiên bản mới nhất để giảm thiểu các mối đe dọa tiềm ẩn.

Mới hơn Cũ hơn