CUPS (Common Unix Printing System) hiện đang đối mặt với một chuỗi lỗ hổng bảo mật nghiêm trọng liên quan đến các thành phần chính như cups-browsed, libcupsfilters, libppd, và cups-filters. Những lỗ hổng này không chỉ ảnh hưởng đến việc xử lý các thuộc tính IPP (Internet Printing Protocol) mà còn tạo điều kiện cho kẻ tấn công thực thi mã từ xa (RCE) qua mạng. Nếu không được vá kịp thời, các lỗ hổng này có thể bị lợi dụng để chiếm quyền điều khiển hệ thống từ xa, đặt các doanh nghiệp và tổ chức sử dụng CUPS vào nguy cơ lớn. Dưới đây là chi tiết về từng lỗ hổng trong chuỗi sự cố này:
1. CVE-2024-47176 (CVSS: 8.3): Lỗ hổng trong cups-browsed dẫn đến thực thi mã từ xa (RCE)
Mô tả:
– Lỗ hổng này ảnh hưởng đến thành phần cups-browsed, một thành phần chịu trách nhiệm khám phá và kết nối tự động với các dịch vụ máy in qua mạng. Trong các phiên bản trước 2.0.1, cups-browsed lắng nghe trên cổng UDP 631 với địa chỉ INADDR_ANY, cho phép bất kỳ gói tin nào từ bất kỳ địa chỉ IP nào được xử lý mà không cần xác thực. Kẻ tấn công có thể gửi gói tin IPP độc hại đến cổng 631, và khi quá trình in ấn được kích hoạt, hệ thống sẽ thực thi mã độc của kẻ tấn công.
Quy trình khai thác lỗ hổng:
– Kẻ tấn công gửi gói tin UDP đến cổng 631, nơi cups-browsed đang lắng nghe.
– Gói tin này chứa một yêu cầu IPP (Internet Printing Protocol) chỉ định một URL do kẻ tấn công kiểm soát, yêu cầu hệ thống truy cập URL đó để lấy thông tin về máy in.
– Khi hệ thống in ấn khởi động quá trình in ấn từ máy in được thiết lập bởi URL độc hại, dữ liệu nhận từ URL này sẽ được sử dụng mà không qua kiểm tra an toàn, dẫn đến việc chiếm quyền điều khiển hệ thống từ xa.
2. CVE-2024-47076 (CVSS: 8.6): Lỗ hổng trong libcupsfilters cho phép chèn thuộc tính IPP độc hại
Mô tả:
– Thành phần libcupsfilters chứa các bộ lọc được dùng để chuyển đổi định dạng dữ liệu trong quá trình in ấn. Các phiên bản trước 2.1b1, hàm cfGetPrinterAttributes5 không thực hiện kiểm tra các thuộc tính IPP trả về từ máy chủ. Điều này có nghĩa là kẻ tấn công có thể chèn các thuộc tính IPP độc hại vào hệ thống thông qua máy chủ IPP bị kiểm soát.
Quy trình khai thác lỗ hổng:
– Kẻ tấn công thiết lập một máy chủ IPP giả mạo, và khi hệ thống mục tiêu yêu cầu thuộc tính từ máy in, nó sẽ trả về dữ liệu độc hại mà không qua kiểm tra.
3. CVE-2024-47175 (CVSS: 8.6): Lỗ hổng trong libppd cho phép tiêm nhiễm dữ liệu khi tạo tệp PPD
Mô tả:
– Thư viện libppd được sử dụng để hỗ trợ tệp PPD (PostScript Printer Description), định dạng mô tả các thuộc tính của máy in. Các phiên bản trước 2.1b1, hàm ppdCreatePPDFromIPP2 không thực hiện kiểm tra và làm sạch các thuộc tính IPP trước khi viết chúng vào tệp PPD. Điều này cho phép kẻ tấn công chèn dữ liệu độc hại vào tệp PPD, có thể dẫn đến các cuộc tấn công nghiêm trọng hơn.
Hậu quả:
– Khi kết hợp với lỗ hổng trong cups-browsed (CVE-2024-47176), điều này có thể dẫn đến việc thực thi mã từ xa RCE.
4. CVE-2024-47177 (CVSS: 9.0): Lỗ hổng trong cups-filters cho phép thực thi lệnh tùy ý
Mô tả:
– cups-filters cung cấp các bộ lọc và backend cho CUPS 2.x. Trong phiên bản trước 2.0.1, lỗ hổng trong thành phần foomatic-rip cho phép bất kỳ giá trị nào truyền qua tham số FoomaticRIPCommandLine của tệp PPD được thực thi dưới dạng lệnh. Điều này đặc biệt nguy hiểm nếu kết hợp với các lỗ hổng khác, dẫn đến việc thực thi mã tùy ý.
Hậu quả:
– Lỗ hổng này đặc biệt nguy hiểm khi được kết hợp với các lỗ hổng khác như CVE-2024-47175 (libppd) (3) và CVE-2024-47176 (cups-browsed) (1), cho phép một kẻ tấn công thực hiện một chuỗi các khai thác dẫn đến việc chiếm quyền điều khiển toàn bộ hệ thống từ xa (RCE).
Hệ thống bị ảnh hưởng
– cups-browsed: Tất cả các phiên bản trước 2.0.1.
– libcupsfilters: Tất cả các phiên bản trước 2.1b1.
– libppd: Tất cả các phiên bản trước 2.1b1.
– cups-filters: Tất cả các phiên bản trước 2.0.1.
Khuyến nghị
Nhằm đảm bảo an toàn thông tin cho hệ thống thông tin của đơn vị, góp phần đảm bảo an toàn cho không gian mạng Việt Nam, Trung tâm VNCERT/CC khuyến nghị người dùng và quản trị viên nên cập nhật ngay lên phiên bản mới nhất của các thành phần bị ảnh hưởng như cups-browsed, libcupsfilters, libppd, và cups-filters.