Tác động
Các tiêu đề bảo mật bị thiếu có thể bị khai thác để thực hiện thao tác clickjacking, tạo tập lệnh chéo trang (XSS) hoặc thu thập thông tin về môi trường máy chủ [S2]. Khi các tiêu đề như Content-Security-Policy (CSP) hoặc X-Frame-Options được áp dụng không nhất quán trên các tuyến đường, kẻ tấn công có thể nhắm mục tiêu vào các đường dẫn không được bảo vệ cụ thể để vượt qua các biện pháp kiểm soát bảo mật trên toàn trang web [S2].
Nguyên nhân gốc rễ
Next.js cho phép các nhà phát triển định cấu hình tiêu đề phản hồi trong next.config.js bằng cách sử dụng thuộc tính headers [S2]. Cấu hình này sử dụng tính năng khớp đường dẫn hỗ trợ ký tự đại diện và biểu thức chính quy [S2]. Các lỗ hổng bảo mật thường phát sinh từ:
- Phạm vi bao phủ đường dẫn không đầy đủ: Các mẫu ký tự đại diện (ví dụ:
/path*) có thể không bao gồm tất cả các tuyến con dự kiến, khiến các trang lồng nhau không có tiêu đề bảo mật [S2]. - Tiết lộ thông tin: Theo mặc định, Next.js có thể bao gồm tiêu đề
X-Powered-By, tiêu đề này hiển thị phiên bản khung trừ khi bị vô hiệu hóa rõ ràng thông qua cấu hìnhpoweredByHeader[S2]. - Cấu hình sai CORS: Các tiêu đề
Access-Control-Allow-Originđược xác định không chính xác trong mảngheaderscó thể cho phép truy cập nhiều nguồn gốc trái phép vào dữ liệu nhạy cảm [S2].
Sửa chữa bê tông
- Mẫu đường dẫn kiểm tra: Đảm bảo tất cả các mẫu
sourcetrongnext.config.jssử dụng các ký tự đại diện thích hợp (ví dụ:/:path*) để áp dụng các tiêu đề trên toàn cầu khi cần thiết [S2]. - Tắt dấu vân tay: Đặt
poweredByHeader: falsetrongnext.config.jsđể ngăn tiêu đềX-Powered-Byđược gửi [S2]. - Hạn chế CORS: Đặt
Access-Control-Allow-Originthành các miền đáng tin cậy cụ thể thay vì ký tự đại diện trong cấu hìnhheaders[S2].
FixVibe kiểm tra nó như thế nào
FixVibe có thể thực hiện thăm dò có kiểm soát đang hoạt động bằng cách thu thập thông tin ứng dụng và so sánh tiêu đề bảo mật của các tuyến khác nhau. Bằng cách phân tích tiêu đề X-Powered-By và tính nhất quán của Content-Security-Policy trên các độ sâu đường dẫn khác nhau, FixVibe có thể xác định các lỗ hổng cấu hình trong next.config.js.
