FixVibe
Covered by FixVibemedium

Next.js Błędna konfiguracja nagłówka zabezpieczeń w next.config.js

Aplikacje Next.js korzystające z pliku next.config.js do zarządzania nagłówkami są podatne na luki w zabezpieczeniach, jeśli wzorce dopasowywania ścieżek są nieprecyzyjne. W tym badaniu zbadano, w jaki sposób błędne konfiguracje symboli wieloznacznych i wyrażeń regularnych prowadzą do brakujących nagłówków zabezpieczeń na wrażliwych trasach oraz w jaki sposób można wzmocnić konfigurację.

CWE-1021CWE-200

Wpływ

Brakujące nagłówki zabezpieczeń można wykorzystać do przechwytywania kliknięć, wykonywania skryptów między witrynami (XSS) lub do zbierania informacji o środowisku serwera [S2]. Gdy nagłówki takie jak Content-Security-Policy (CSP) lub X-Frame-Options są niespójnie stosowane na trasach, osoby atakujące mogą obrać za cel określone niechronione ścieżki, aby ominąć kontrolę bezpieczeństwa obowiązującą w całej witrynie [S2].

Główna przyczyna

Next.js umożliwia programistom konfigurowanie nagłówków odpowiedzi w next.config.js przy użyciu właściwości headers [S2]. W tej konfiguracji używane jest dopasowywanie ścieżek obsługujące symbole wieloznaczne i wyrażenia regularne [S2]. Luki w zabezpieczeniach zazwyczaj wynikają z:

  • Niekompletne pokrycie ścieżki: Wzorce wieloznaczne (np. /path*) mogą nie obejmować wszystkich zamierzonych podtras, pozostawiając zagnieżdżone strony bez nagłówków zabezpieczeń [S2].
  • Ujawnianie informacji: Domyślnie Next.js może zawierać nagłówek X-Powered-By, który ujawnia wersję frameworka, chyba że zostanie jawnie wyłączony poprzez konfigurację poweredByHeader [S2].
  • CORS Błędna konfiguracja: Nieprawidłowo zdefiniowane nagłówki Access-Control-Allow-Origin w obrębie tablicy headers mogą umożliwiać nieautoryzowany dostęp między źródłami do wrażliwych danych [S2].

Poprawki betonu

  • Wzorce ścieżki audytu: Upewnij się, że wszystkie wzorce source w next.config.js używają odpowiednich symboli wieloznacznych (np. /:path*), aby w razie potrzeby zastosować nagłówki globalnie. [S2].
  • Wyłącz odcisk palca: Ustaw poweredByHeader: false w next.config.js, aby zapobiec wysyłaniu nagłówka X-Powered-By [S2].
  • Ogranicz CORS: Ustaw Access-Control-Allow-Origin na określone zaufane domeny zamiast symboli wieloznacznych w konfiguracji headers [S2].

Jak FixVibe to testuje

FixVibe może przeprowadzić aktywną sondę bramkowaną, przeszukując aplikację i porównując nagłówki zabezpieczeń różnych tras. Analizując nagłówek X-Powered-By i spójność Content-Security-Policy na różnych głębokościach ścieżki, FixVibe może zidentyfikować luki konfiguracyjne w next.config.js.