Explorer
KNOW-ANT-010

Anti-Pattern : Secrets JWT par défaut et CORS ouvert

Domaine
cybersecu
Type
anti-pattern
Priorité
P2

Parent : [[INDEX-CYBERSECU]]

Anti-Pattern : Secrets JWT par défaut et CORS ouvert

Description

Utiliser des secrets JWT avec des valeurs par défaut prévisibles (votre_cle_secrete_jwt, changez_cette_cle_secrete_en_production_2026), configurer CORS avec origin: '*', et réutiliser le même secret pour les sessions Express. Cela permet la forgery de tokens JWT, le vol de sessions via XSS/CSRF, et l'accès non autorisé depuis n'importe quel site web.

Exemple réel - Archive Ygg

// config.js
module.exports = {
  jwtSecret: process.env.JWT_SECRET || 'votre_cle_secrete_jwt',  // ❌
  secretKey: process.env.SECRET_KEY || 'votre_cle_secrete_hash', // ❌
  corsOrigin: process.env.CORS_ORIGIN || '*',                      // ❌
};

// server.js
app.use(cors({
  origin: config.corsOrigin,  // '*' par défaut
  credentials: true             // ❌ + * = catastrophe
}));

app.use(session({
  secret: config.jwtSecret,    // ❌ Même secret pour JWT et sessions
}));
# .env
JWT_SECRET=changez_cette_cle_secrete_en_production_2026  # ❌ Prévisible
SECRET_KEY="hAb0xu&#O2pYevZ65Rid9NuhC09WD8"            # ❌ Trop court
CORS_ORIGIN=*                                             # ❌ Ouvert

Conséquences

  • JWT Forgery : Secret connu = création de tokens JWT valides
  • Session Hijacking : Secret de session connu = forgery de cookies
  • CSRF : CORS ouvert + credentials = requêtes cross-site authentifiées
  • Privilege Escalation : Création de tokens admin
  • API Abuse : Accès depuis n'importe quel site

Quand c'est acceptable

JAMAIS en production. Les fallbacks sont dangereux même en développement.

Solution

Utiliser KNOW-PAT-061 — API Express avec JWT hardening :

  • Secrets ≥ 64 caractères aléatoires
  • CORS strict avec whitelist
  • Secrets distincts pour JWT, sessions, refresh tokens
  • Pas de fallback prévisible

Références

  • Archive Ygg : 01_SOURCE_CODE/02b_express_api/config.js, dotenv.txt
  • OWASP : JWT Security