Một nhà nghiên cứu đã công bố mã khai thác cho lỗ hổng thực thi từ xa (RCE) ảnh hưởng đến ReportLab Toolkit, một thư viện Python phổ biến được sử dụng bởi nhiều dự án để tạo tệp PDF từ đầu vào HTML.
Lỗ hổng có mã định danh là CVE – 2023 – 33733, được công bố trên GitHub cùng POC của lỗ hổng. Điều này làm tăng khả năng khai thác của lỗ hổng trên thực tế.
ReportLab Toolkit được sử dụng cho nhiều dự án dưới dạng thư viện PDF và có khoảng 3,5 triệu lượt tải xuống hàng tháng trên PyPI (Python Package Index).
Qua mặt bản vá cũ
Lổ hổng bắt nguồn từ khả năng bỏ qua các hạn chế sandbox trên ‘rl_safe_eval’, có vai trò ngăn chặn việc thực thi mã độc, dẫn đến việc kẻ tấn công truy cập các chức năng tích hợp Python được tích hợp sẵn.
Hàm ‘rl_safe_eval’ được coi như một biện pháp để ngăn chặn sự cố thực thi mã từ xa được phát hiện năm 2019; do đó nhà nghiên cứu tập trung vào việc qua mặt nó.
PoC được trình bày truy xuất chức năng ‘type’ tích hợp giúp tạo một lớp mới có tên ‘Word’, kế thừa từ lớp ‘str’, có thể bỏ qua kiểm tra an toàn và cấp quyền truy cập vào các thuộc tính nhạy cảm như ‘code’.
Tiếp theo, ‘type’ tự gọi để vượt qua các bước kiểm tra hàm safe eval liên quan đến các hạn chế về số lượng đối số, cho phép kẻ tấn công lạm dụng hàm ‘type’ gốc, tích hợp sẵn để tạo các lớp và đối tượng mới.
Điều này dẫn đến việc xây dựng một hàm độc hại từ mã byte của một hàm đã biên dịch. Khi được thực thi, hàm này có thể thực hiện một hành động tùy ý. Trong ví dụ của nhà nghiên cứu, nó gọi một lệnh OS để tạo một tệp có tên ‘exploited’ trong thư mục “/tmp/”.
Nhà nghiên cứu lưu ý rằng toàn bộ mã khai thác phải được chạy với hàm eval trong một biểu thức duy nhất, vì vậy nó sử dụng thủ thuật ‘hiểu danh sách’ (list comprehension).
The Cure53 researcher, Elyas Damej, warns in his write-up that the exploitation of CVE-2023-33733 is as simple as incorporating malicious code in an HTML file that will be converted to PDF on software that uses the ReportLab library.
Việc sử dụng rộng rãi thư viện và khai thác công khai khiến nhiều người dùng gặp rủi ro. Các nhà cung cấp phần mềm sử dụng thư viện có thể giải quyết rủi ro chuỗi cung ứng bằng cách áp dụng bản cập nhật có sẵn được phát hành ngày 27/4 có phiên bản 3.6.13.