FixVibe
Covered by FixVibemedium

Next.js Mauvaise configuration de l'en-tête de sécurité dans next.config.js

Les applications Next.js utilisant next.config.js pour la gestion des en-têtes sont sensibles aux failles de sécurité si les modèles de correspondance de chemin sont imprécis. Cette recherche explore comment les erreurs de configuration des caractères génériques et des regex conduisent à des en-têtes de sécurité manquants sur les routes sensibles et comment renforcer la configuration.

CWE-1021CWE-200

##Impact Les en-têtes de sécurité manquants peuvent être exploités pour effectuer du détournement de clics, des scripts intersites (XSS) ou collecter des informations sur l'environnement du serveur [S2]. Lorsque des en-têtes tels que Content-Security-Policy (CSP) ou X-Frame-Options sont appliqués de manière incohérente sur les routes, les attaquants peuvent cibler des chemins non protégés spécifiques pour contourner les contrôles de sécurité à l'échelle du site [S2].

Cause première

Next.js permet aux développeurs de configurer les en-têtes de réponse dans next.config.js à l'aide de la propriété headers [S2]. Cette configuration utilise une correspondance de chemin qui prend en charge les caractères génériques et les expressions régulières [S2]. Les vulnérabilités de sécurité proviennent généralement de :

  • Couverture incomplète du chemin : les modèles génériques (par exemple, /path*) peuvent ne pas couvrir tous les sous-itinéraires prévus, laissant les pages imbriquées sans en-têtes de sécurité [S2].
  • Divulgation d'informations : par défaut, Next.js peut inclure l'en-tête X-Powered-By, qui révèle la version du framework, à moins qu'il ne soit explicitement désactivé via la configuration poweredByHeader [S2].
  • Mauvaise configuration CORS : des en-têtes Access-Control-Allow-Origin mal définis dans la baie headers peuvent permettre un accès non autorisé d'origine croisée aux données sensibles [S2].

Réparations concrètes

  • Modèles de chemin d'audit : assurez-vous que tous les modèles source dans next.config.js utilisent des caractères génériques appropriés (par exemple, /:path*) pour appliquer les en-têtes globalement lorsque cela est nécessaire [S2].
  • Désactiver les empreintes digitales : définissez poweredByHeader: false dans next.config.js pour empêcher l'envoi de l'en-tête X-Powered-By [S2].
  • Restreindre CORS : définissez Access-Control-Allow-Origin sur des domaines de confiance spécifiques plutôt que sur des caractères génériques dans la configuration headers [S2].

Comment FixVibe le teste

FixVibe pourrait effectuer une sonde fermée active en explorant l'application et en comparant les en-têtes de sécurité de différentes routes. En analysant l'en-tête X-Powered-By et la cohérence de Content-Security-Policy sur différentes profondeurs de chemin, FixVibe peut identifier les lacunes de configuration dans next.config.js.