-
09/04/2020
-
93
-
600 bài viết
Xuất hiện mã khai thác cho lỗ hổng RCE trong thư viện ReportLab PDF
Một nhà nghiên cứu đã công bố mã khai thác cho lỗ hổng thực thi mã từ xa (RCE) ảnh hưởng đến Toolkit ReportLab, một thư viện Python phổ biến được sử dụng để tạo tệp PDF từ đầu vào HTML.
Lỗ hổng được gán mã định danh CVE-2023-33733. PoC cho CVE này đã được công bố trên GitHub cùng với một bài viết về chi tiết kỹ thuật của lỗ hổng. Điều này đã làm tăng khả năng lỗ hổng bị khai thác trong thực tế.
Bộ công cụ ReportLab được nhiều dự án sử dụng 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)
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 truy xuất hàm 'type' tích hợp giúp tạo một lớp mới có tên 'Word'. Lớp này kế thừa từ lớp 'str', có thể bỏ qua bước 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).
Khai thác CVE-2023-33733 có thể thực hiện bằng một quy trình đơn giản: đưa mã độc vào một tệp HTML, sau đó tệp này được chuyển đổi thành PDF trên phần mềm sử dụng thư viện ReportLab.
Việc thư viện được sử dụng rộng rãi và mã khai thác đượ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 bảo mật ngày 27/4 có phiên bản 3.6.13.
Theo nhà nghiên cứu, lỗ hổng ảnh hưởng đến tất cả các phiên bản trước đó của thư viện.
Lỗ hổng được gán mã định danh CVE-2023-33733. PoC cho CVE này đã được công bố trên GitHub cùng với một bài viết về chi tiết kỹ thuật của lỗ hổng. Điều này đã làm tăng khả năng lỗ hổng bị khai thác trong thực tế.
Bộ công cụ ReportLab được nhiều dự án sử dụng 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' (hàm có vai trò ngăn chặn việc thực thi mã độc hại), dẫn đến việc kẻ tấn công truy cập vào các chức năng 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 truy xuất hàm 'type' tích hợp giúp tạo một lớp mới có tên 'Word'. Lớp này kế thừa từ lớp 'str', có thể bỏ qua bước 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).
Khai thác CVE-2023-33733 có thể thực hiện bằng một quy trình đơn giản: đưa mã độc vào một tệp HTML, sau đó tệp này được chuyển đổi thành PDF trên phần mềm sử dụng thư viện ReportLab.
Việc thư viện được sử dụng rộng rãi và mã khai thác đượ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 bảo mật ngày 27/4 có phiên bản 3.6.13.
Theo nhà nghiên cứu, lỗ hổng ảnh hưởng đến tất cả các phiên bản trước đó của thư viện.
Nguồn: Bleeping Computer