FixVibe
Covered by FixVibemedium

Next.js Verkeerde configuratie van beveiligingsheader in next.config.js

Next.js-toepassingen die next.config.js gebruiken voor headerbeheer zijn gevoelig voor beveiligingslekken als de pad-matchingpatronen onnauwkeurig zijn. Dit onderzoek onderzoekt hoe misconfiguraties met wildcards en regex leiden tot ontbrekende beveiligingsheaders op gevoelige routes en hoe de configuratie kan worden versterkt.

CWE-1021CWE-200

Impact

Ontbrekende beveiligingsheaders kunnen worden misbruikt om clickjacking, cross-site scripting (XSS) uit te voeren of informatie te verzamelen over de serveromgeving [S2]. Wanneer headers zoals Content-Security-Policy (CSP) of X-Frame-Options inconsistent worden toegepast op verschillende routes, kunnen aanvallers zich richten op specifieke onbeschermde paden om de sitebrede beveiligingscontroles [S2] te omzeilen.

Oorzaak

Met Next.js kunnen ontwikkelaars responsheaders in next.config.js configureren met behulp van de headers-eigenschap [S2]. Deze configuratie maakt gebruik van padmatching die jokertekens en reguliere expressies [S2] ondersteunt. Kwetsbaarheden in de beveiliging komen doorgaans voort uit:

  • Onvolledige paddekking: Jokerpatronen (bijvoorbeeld /path*) dekken mogelijk niet alle beoogde subroutes, waardoor geneste pagina's zonder beveiligingsheaders [S2] achterblijven.
  • Openbaarmaking van informatie: Next.js kan standaard de X-Powered-By-header bevatten, die de frameworkversie onthult, tenzij expliciet uitgeschakeld via de poweredByHeader-configuratie [S2].
  • CORS Verkeerde configuratie: onjuist gedefinieerde Access-Control-Allow-Origin-headers binnen de headers-array kunnen ongeautoriseerde cross-origin-toegang tot gevoelige gegevens [S2] mogelijk maken.

Betonreparaties

  • Auditpadpatronen: zorg ervoor dat alle source-patronen in next.config.js de juiste jokertekens gebruiken (bijvoorbeeld /:path*) om headers globaal toe te passen waar nodig [S2].
  • Vingerafdrukken uitschakelen: stel poweredByHeader: false in next.config.js in om te voorkomen dat de X-Powered-By-header [S2] wordt verzonden.
  • CORS beperken: stel Access-Control-Allow-Origin in op specifieke vertrouwde domeinen in plaats van jokertekens in de headers-configuratie [S2].

Hoe FixVibe erop test

FixVibe kan een actieve gated probe uitvoeren door de applicatie te crawlen en de beveiligingsheaders van verschillende routes te vergelijken. Door de X-Powered-By-header en de consistentie van Content-Security-Policy over verschillende paddiepten te analyseren, kan FixVibe configuratielacunes in next.config.js identificeren.