JWT Security
devsecopsDéfinition
JWT (JSON Web Token) Security couvre les pratiques de sécurisation de l'utilisation des JSON Web Tokens, un standard ouvert (RFC 7519) largement utilisé pour l'authentification et l'autorisation dans les APIs REST et les architectures microservices. Bien que le format JWT soit bien défini, son implémentation présente de nombreux pièges de sécurité qui ont conduit à des vulnérabilités critiques dans des centaines d'applications. Un JWT est composé de trois parties encodées en Base64URL séparées par des points : le Header (algorithme de signature et type), le Payload (claims : identité de l'utilisateur, rôles, expiration), et la Signature. La validité d'un JWT repose sur la vérification de sa signature par le serveur, garantissant que le token n'a pas été modifié depuis son émission. Les vulnérabilités classiques des implémentations JWT sont bien documentées. L'attaque "algorithm confusion" (CVE-2015-9235) exploite la possibilité de spécifier "alg: none" dans le header JWT, contournant la vérification de signature sur des bibliothèques vulnérables. L'attaque RS256 to HS256 (algorithm confusion) trompe un serveur utilisant RS256 en lui soumettant un JWT signé avec HS256 en utilisant la clé publique RSA comme secret HMAC. La faiblesse des secrets HMAC (HS256 avec des secrets courts ou prévisibles) permet des attaques par force brute (hashcat peut casser des secrets JWT HS256 faibles en quelques heures). D'autres vulnérabilités incluent : l'absence de vérification de l'expiration (claim "exp"), l'absence de vérification de l'audience (claim "aud") permettant la réutilisation de tokens entre services, les claims sensibles en clair dans le payload (les JWTs sont encodés, pas chiffrés — n'importe qui peut lire le payload sans la clé), la mauvaise gestion de la révocation (les JWTs sont stateless, il n'est pas possible de les invalider sans mécanisme supplémentaire comme une blacklist ou un versioning). Les bonnes pratiques JWT incluent : utiliser RS256 ou ES256 (asymétriques) plutôt que HS256 pour les architectures multi-services, des secrets HS256 d'au moins 256 bits générés aléatoirement, des durées d'expiration courtes (15 minutes à 1 heure), la vérification de tous les claims (exp, iss, aud, nbf), et un mécanisme de rotation/révocation via des refresh tokens.
Vulnérabilités classiques JWT à éviter
Les pièges JWT les plus courants : 1) alg:none bypass (certaines bibliothèques acceptent des tokens non signés si l'algorithme est "none") — toujours valider que l'algorithme est celui attendu. 2) Algorithm confusion RS256→HS256 (signer un token avec la clé publique RSA en HMAC) — ne jamais accepter plusieurs algorithmes. 3) Secret HS256 faible (brute-forceable avec hashcat) — minimum 256 bits aléatoires. 4) Absence de vérification de l'expiration (exp) et de l'audience (aud) — toujours vérifier tous les claims.
Architecture JWT sécurisée pour les microservices
Pour les architectures microservices, RS256 ou ES256 (signatures asymétriques) permettent à chaque service de vérifier les tokens sans partager un secret. Le service d'authentification signe avec la clé privée, les autres services vérifient avec la clé publique exposée via un JWKS endpoint (/.well-known/jwks.json). La rotation des clés doit être planifiée avec une période de transition (double-publication des clés ancienne et nouvelle) pour éviter les interruptions.
Révocation et refresh tokens
Les JWTs étant stateless, leur révocation immédiate nécessite des mécanismes supplémentaires : une blacklist de JTI (JWT ID) dans Redis pour les tokens révoqués, un versioning de token dans le profil utilisateur (token_version), ou des access tokens à courte durée de vie (5-15 min) avec refresh tokens à longue durée (7-30 jours) révocables côté serveur. La déconnexion invalide le refresh token mais l'access token reste valide jusqu'à son expiration naturelle.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h