-
09/04/2020
-
107
-
946 bài viết
Fortinet vá lỗ hổng SQL Injection nghiêm trọng trên FortiWeb (CVE-2025-25257)
Fortinet vừa phát hành bản vá cho lỗ hổng CVE-2025-25257 trong sản phẩm FortiWeb. Lỗ hổng này được chấm điểm 9,6/10 theo thang CVSS, cho phép tin tặc chưa xác thực (unauthenticated attacker) thực thi các câu lệnh SQL độc hại từ xa và thậm chí có thể chiếm quyền hệ thống nếu không được xử lý kịp thời.
Lỗ hổng bắt nguồn từ một hàm có tên get_fabric_user_by_token trong thành phần Fabric Connector - nơi chịu trách nhiệm kết nối FortiWeb với các sản phẩm khác của Fortinet.
Lỗi thuộc về nhóm SQL Injection (CWE-89) - một lỗi phổ biến nhưng cực kỳ nguy hiểm nếu tồn tại ở cấp độ API. Khi FortiWeb nhận một yêu cầu HTTP có kèm theo Bearer token trong header (đầu yêu cầu). Hệ thống sẽ gọi hàm get_fabric_user_by_token, sau đó gọi tiếp fabric_access_check.
Dữ liệu từ token này không được kiểm tra và làm sạch (sanitize) đúng cách mà vẫn được đưa thẳng vào truy vấn SQL.
Kết quả: Tin tặc có thể tự viết và thực thi câu lệnh SQL tùy ý, dù không hề đăng nhập vào hệ thống.
Đặc biệt nguy hiểm: Nếu kết hợp câu lệnh SQL như SELECT... INTO OUTFILE, hacker có thể ghi một file độc hại lên hệ thống (ví dụ, script Python), sau đó thực thi nó để chiếm quyền truy cập – từ SQL Injection chuyển thành Remote Code Execution (RCE).
Các phiên bản FortiWeb sau đây đều bị ảnh hưởng:
Với mức độ nghiêm trọng cao, phạm vi ảnh hưởng lớn và khả năng khai thác dễ dàng, các tổ chức đang sử dụng FortiWeb cần hành động ngay lập tức để vá lỗi, kiểm tra hệ thống và thắt chặt kiểm soát truy cập.
Lỗ hổng bắt nguồn từ một hàm có tên get_fabric_user_by_token trong thành phần Fabric Connector - nơi chịu trách nhiệm kết nối FortiWeb với các sản phẩm khác của Fortinet.
Lỗi thuộc về nhóm SQL Injection (CWE-89) - một lỗi phổ biến nhưng cực kỳ nguy hiểm nếu tồn tại ở cấp độ API. Khi FortiWeb nhận một yêu cầu HTTP có kèm theo Bearer token trong header (đầu yêu cầu). Hệ thống sẽ gọi hàm get_fabric_user_by_token, sau đó gọi tiếp fabric_access_check.
Dữ liệu từ token này không được kiểm tra và làm sạch (sanitize) đúng cách mà vẫn được đưa thẳng vào truy vấn SQL.
Kết quả: Tin tặc có thể tự viết và thực thi câu lệnh SQL tùy ý, dù không hề đăng nhập vào hệ thống.
Đặc biệt nguy hiểm: Nếu kết hợp câu lệnh SQL như SELECT... INTO OUTFILE, hacker có thể ghi một file độc hại lên hệ thống (ví dụ, script Python), sau đó thực thi nó để chiếm quyền truy cập – từ SQL Injection chuyển thành Remote Code Execution (RCE).
Các phiên bản FortiWeb sau đây đều bị ảnh hưởng:
- 7.6.0 → 7.6.3 → Cập nhật lên 7.6.4
- 7.4.0 → 7.4.7 → Cập nhật lên 7.4.8
- 7.2.0 → 7.2.10 → Cập nhật lên 7.2.11
- 7.0.0 → 7.0.10 → Cập nhật lên 7.0.11
- Các API endpoint dễ bị tấn công bao gồm:
- /api/fabric/device/status
- /api/v[0-9]/fabric/widget/
- Nếu hệ thống FortiWeb của tổ chức đang mở giao diện quản trị HTTP/HTTPS ra internet, nguy cơ bị khai thác từ xa là rất cao.
- Cập nhật bản vá ngay lập tức theo đúng phiên bản FortiWeb đang sử dụng.
- Trong thời gian chờ cập nhật, nên vô hiệu hóa giao diện quản trị HTTP/HTTPS nếu không cần thiết – đây là tuyến tấn công chính.
- Kiểm tra log hệ thống và truy vấn SQL để phát hiện các dấu hiệu bị khai thác.
- Áp dụng nguyên tắc "least privilege" cho người dùng và dịch vụ, hạn chế quyền ghi file của tài khoản mysql nếu có thể.
- Thường xuyên đánh giá bảo mật API, do các API endpoint ngày càng là mục tiêu tấn công của hacker.
Với mức độ nghiêm trọng cao, phạm vi ảnh hưởng lớn và khả năng khai thác dễ dàng, các tổ chức đang sử dụng FortiWeb cần hành động ngay lập tức để vá lỗi, kiểm tra hệ thống và thắt chặt kiểm soát truy cập.