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.