Вплив
Відсутні заголовки безпеки можна використати для виконання клікджекінгу, міжсайтового сценарію (XSS) або збору інформації про серверне середовище [S2]. Коли такі заголовки, як Content-Security-Policy (CSP) або X-Frame-Options, неузгоджено застосовуються між маршрутами, зловмисники можуть націлитися на певні незахищені шляхи, щоб обійти засоби контролю безпеки на сайті [S2].
Основна причина
Next.js дозволяє розробникам налаштовувати заголовки відповідей у next.config.js за допомогою властивості headers [S2]. У цій конфігурації використовується зіставлення шляху, яке підтримує символи підстановки та регулярні вирази [S2]. Уразливі місця безпеки зазвичай виникають через:
- Неповне покриття шляху: Шаблони підстановок (наприклад,
/path*) можуть не охоплювати всі призначені підмаршрути, залишаючи вкладені сторінки без заголовків безпеки [S2]. - Розкриття інформації: за замовчуванням Next.js може включати заголовок
X-Powered-By, який розкриває версію фреймворку, якщо його явно не вимкнено через конфігураціюpoweredByHeader[S2]. - Неправильна конфігурація CORS: неправильно визначені заголовки
Access-Control-Allow-Originу масивіheadersможуть дозволити неавторизований доступ до конфіденційних даних [S2] з іншого джерела.
Конкретні виправлення
- Шаблони шляху аудиту: переконайтеся, що всі шаблони
sourceуnext.config.jsвикористовують відповідні символи підстановки (наприклад,/:path*) для глобального застосування заголовків, де це необхідно, [S2]. - Вимкнути відбитки пальців: установіть
poweredByHeader: falseуnext.config.js, щоб запобігти надсиланню заголовкаX-Powered-By[S2]. - Обмежити CORS: установіть для
Access-Control-Allow-Originпевні довірені домени, а не символи підстановки в конфігураціїheaders[S2].
Як FixVibe перевіряє це
FixVibe міг би виконати активне закрите зондування, скануючи програму та порівнюючи заголовки безпеки різних маршрутів. Аналізуючи заголовок X-Powered-By і узгодженість Content-Security-Policy на різних глибинах шляху, FixVibe може виявити прогалини конфігурації в next.config.js.
