Lỗ hổng trong trình quản lý gói Hàng hóa được sử dụng cho các dự án Rust

Trong trình quản lý gói Cargo, được sử dụng để quản lý các gói và xây dựng dự án bằng ngôn ngữ Rust, hai lỗ hổng đã được xác định có thể bị khai thác khi tải xuống các gói được thiết kế đặc biệt từ kho của bên thứ ba (có thông báo rằng người dùng kho lưu trữ chính thức của Crates.io không bị ảnh hưởng bởi vấn đề này). Lỗ hổng đầu tiên (CVE-2022-36113) cho phép ghi đè hai byte đầu tiên của bất kỳ tệp nào miễn là các quyền hiện tại cho phép. Lỗ hổng thứ hai (CVE-2022-36114) có thể được sử dụng để làm cạn kiệt dung lượng ổ đĩa.

Các lỗ hổng sẽ được khắc phục trong bản phát hành Rust 1.64, dự kiến ​​vào ngày 22 tháng XNUMX. Các lỗ hổng được đánh giá ở mức độ nghiêm trọng thấp, vì tác hại tương tự có thể xảy ra khi sử dụng các gói chưa được xác minh từ kho lưu trữ của bên thứ ba bằng cách sử dụng khả năng tiêu chuẩn để khởi chạy trình xử lý tùy chỉnh từ tập lệnh hợp ngữ hoặc macro thủ tục được cung cấp trong gói. Đồng thời, các vấn đề nêu trên khác nhau ở chỗ chúng được khai thác ở khâu mở gói sau khi tải xuống (chưa lắp ráp).

Đặc biệt, sau khi tải một gói hàng xuống, hàng hóa sẽ giải nén nội dung của nó vào thư mục ~/.cargo và lưu dấu hiệu giải nén thành công trong tệp .cargo-ok. Bản chất của lỗ hổng đầu tiên là người tạo gói có thể đặt một liên kết tượng trưng bên trong với tên .cargo-ok, điều này sẽ dẫn đến việc viết văn bản “ok” vào tệp được chỉ ra bởi liên kết.

Lỗ hổng thứ hai là do thiếu giới hạn về kích thước dữ liệu được trích xuất từ ​​kho lưu trữ, có thể được sử dụng để tạo “bom zip” (kho lưu trữ có thể chứa dữ liệu cho phép đạt được tỷ lệ nén tối đa cho định dạng zip - khoảng 28 triệu lần, chẳng hạn như trong trường hợp này, tệp zip 10 MB được chuẩn bị đặc biệt sẽ dẫn đến việc giải nén khoảng 281 TB dữ liệu).

Nguồn: opennet.ru

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