Một lỗ hổng nghiêm trọng trong công cụ quét lỗ hổng mã nguồn mở Nuclei từng cho phép kẻ tấn công chèn mã độc vào các mẫu (templates) và bỏ qua cơ chế xác minh chữ ký..
Nuclei, phát triển bởi ProjectDiscovery, sử dụng hơn 10.000 mẫu YAML để tìm kiếm lỗ hổng trên website, từ cấu hình sai đến các backdoor nguy hiểm. Mỗi mẫu đều được ký bằng một hàm băm digest để ngăn chặn mã độc xâm nhập.
Nguyên nhân của lỗ hổng xuất phát từ sự không khớp giữa cơ chế xác minh chữ ký dựa trên regex của Go và cách trình phân tích YAML xử lý dấu ngắt dòng khi xác minh chữ ký. Khi xác minh, logic của Go coi ký tự \r là một phần của cùng một dòng, trong khi trình phân tích YAML lại xem nó là một dấu ngắt dòng. Sự khác biệt này cho phép kẻ tấn công chèn nội dung độc hại, bỏ qua xác minh chữ ký nhưng vẫn được thực thi khi YAML parser xử lý.
Ngoài ra, Nuclei còn gặp vấn đề khi xử lý nhiều dòng # digest: trong cùng một mẫu. Quá trình chỉ kiểm tra dòng # digest: đầu tiên và bỏ qua các dòng khác. Kẻ tấn công có thể lợi dụng bằng cách thêm các payload độc hại vào những dòng # digest: tiếp theo, chứa phần “code” độc hại, để thực thi khi mẫu được sử dụng.
Lỗ hổng này được các nhà nghiên cứu tại Wiz phát hiện và báo cáo vào tháng 8 năm 2024. ProjectDiscovery đã nhanh chóng sửa lỗi trong phiên bản Nuclei v3.3.2, phát hành vào tháng 9. Người dùng được khuyến nghị cập nhật các phiên bản mới ngay lập tức để đảm bảo an toàn.