FixVibe
Covered by FixVibemedium

Cấu hình sai tiêu đề bảo mật Next.js trong next.config.js

Các ứng dụng Next.js sử dụng next.config.js để quản lý tiêu đề dễ bị ảnh hưởng bởi các lỗ hổng bảo mật nếu các mẫu khớp đường dẫn không chính xác. Nghiên cứu này khám phá cách cấu hình sai ký tự đại diện và biểu thức chính quy dẫn đến thiếu tiêu đề bảo mật trên các tuyến nhạy cảm và cách tăng cường cấu hình.

CWE-1021CWE-200

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ình poweredByHeader [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ảng headers có 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 source trong next.config.js sử 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: false trong next.config.js để ngăn tiêu đề X-Powered-By được gửi [S2].
  • Hạn chế CORS: Đặt Access-Control-Allow-Origin thành các miền đáng tin cậy cụ thể thay vì ký tự đại diện trong cấu hình headers [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.