- Các tác nhân đe dọa có thể khai thác một lỗ hổng bảo mật trong thư viện Rust để nhắm mục tiêu vào các hệ thống Windows trong các cuộc tấn công command injection.
Lỗ hổng có định danh CVE-2024-24576, phát sinh từ các vấn đề trong OS command và tính năng chèn đối số, có thể cho phép kẻ tấn công thực thi các lệnh không mong muốn, tiềm ẩn nguy cơ gây hại trên hệ điều hành.
GitHub đánh giá lỗ hổng này là nghiêm trọng với điểm CVSS tối đa 10/10. Kẻ tấn công không cần xác thực có thể khai thác lỗ hổng từ xa mà không cần có sự tương tác của người dùng.
Nhóm Hỗ trợ bảo mật của Rust cho biết họ được báo cáo rằng “thư viện của Rust xử lý các đối số (argument) không đúng cách khi gọi các tệp batch (với phần mở rộng là bat và cmd) trên Windows bằng Command API”.
“Kẻ tấn công có thể vượt qua biện pháp xử lý dữ liệu đầu vào hiện có [trong phiên bản bị ảnh hưởng] và kiểm soát các đối số truyền vào để thực thi các lệnh shell tùy ý. Lỗ hổng được đánh giá là nghiêm trọng trong trường hợp bạn đang gọi các tệp batch trên Windows với các đối số không an toàn. Không có nền tảng nào khác bị ảnh hưởng."
Tất cả các phiên bản Rust trước 1.77.2 trên Windows đều bị ảnh hưởng nếu mã nguồn của chương trình hoặc một trong các thư viện của nó gọi và thực thi các tệp batch với các đối số không an toàn.
Nhóm bảo mật của Rust đã giải quyết vấn đề này bằng cách cải thiện việc kiểm tra, xử lý (escape) tham số truyền vào và sửa đổi Command API. Nếu Command API không thể escape đối số một cách an toàn trong khi tạo tiến trình (process), nó sẽ trả về lỗi InvalidInput.
"Nếu bạn tự triển khai tính năng escape hoặc chỉ xử lý các tham số đáng tin cậy trên Windows, bạn có thể sử dụng phương thức CommandExt::raw_arg để bỏ qua logic escape của thư viện tiêu chuẩn", Rust Security Response WG cho biết thêm.
Kỹ sư Ryotak của Flatt Security, người đã phát hiện ra lỗ hổng, cho biết lỗ hổng này cũng ảnh hưởng đến các ngôn ngữ lập trình khác - được liệt kê dưới đây, tuy nhiên, không phải tất cả chúng đều được phát hành bản vá:
- Erlang (cập nhật tài liệu)
- Go (cập nhật tài liệu)
- Haskell (có sẵn bản vá)
- Java (không được vá)
- Node.js (bản vá chưa có sẵn)
- PHP (bản vá chưa có sẵn)
- Python (cập nhật tài liệu)
- Ruby (cập nhật tài liệu)
Ryotak khuyến nghị rằng: "Để ngăn chặn việc thực thi các tệp batch không mong muốn, bạn nên cân nhắc việc chuyển các tệp batch sang một thư mục không nằm trong biến môi trường PATH". "Trong trường hợp này, các tệp batch sẽ không được thực thi trừ khi đường dẫn đầy đủ được chỉ định, do đó có thể ngăn chặn việc thực thi các tệp batch không mong muốn".
PV (bleepingcomputer.com/tinnhiemmang.vn)