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 depoweredByHeader-configuratie [S2]. - CORS Verkeerde configuratie: onjuist gedefinieerde
Access-Control-Allow-Origin-headers binnen deheaders-array kunnen ongeautoriseerde cross-origin-toegang tot gevoelige gegevens [S2] mogelijk maken.
Betonreparaties
- Auditpadpatronen: zorg ervoor dat alle
source-patronen innext.config.jsde juiste jokertekens gebruiken (bijvoorbeeld/:path*) om headers globaal toe te passen waar nodig [S2]. - Vingerafdrukken uitschakelen: stel
poweredByHeader: falseinnext.config.jsin om te voorkomen dat deX-Powered-By-header [S2] wordt verzonden. - CORS beperken: stel
Access-Control-Allow-Originin op specifieke vertrouwde domeinen in plaats van jokertekens in deheaders-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.
