FixVibe
Covered by FixVibemedium

Next.js Неправильна конфігурація заголовка безпеки в next.config.js

Програми Next.js, які використовують next.config.js для керування заголовками, чутливі до прогалин у безпеці, якщо шаблони зіставлення шляху є неточними. У цьому дослідженні досліджується, як неправильні конфігурації символів підстановки та регулярних виразів призводять до відсутності заголовків безпеки на конфіденційних маршрутах і як посилити конфігурацію.

CWE-1021CWE-200

Вплив

Відсутні заголовки безпеки можна використати для виконання клікджекінгу, міжсайтового сценарію (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.