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.