JWT Attack
hackingDéfinition
Les attaques sur les JSON Web Tokens (JWT) ciblent les vulnérabilités dans la génération, validation et utilisation des tokens JWT utilisés pour l'authentification et l'autorisation dans les applications web modernes et les APIs REST. Des erreurs d'implémentation permettent de forger des tokens arbitraires ou de contourner les mécanismes d'authentification. Les vulnérabilités JWT les plus critiques incluent : l'algorithme 'none' (si le serveur accepte les tokens sans signature quand alg=none, l'attaquant peut créer des tokens arbitraires), la confusion d'algorithme RS256 vers HS256 (si le serveur supporte HS256 et RS256, et que la clé publique RSA est connue, l'attaquant peut signer un token avec HS256 en utilisant la clé publique RSA comme clé HMAC - le serveur valide avec la même clé publique), les clés secrètes faibles (bruteforçables, des outils comme jwt_tool et hashcat peuvent cracker les HMAC HS256 secrets faibles), et les informations sensibles dans le payload non chiffré. La structure d'un JWT est : header.payload.signature, tous encodés en Base64URL. Le header spécifie l'algorithme et le type. Le payload contient les claims (sub, iat, exp, rôle, etc.). La signature permet de vérifier l'intégrité. Modifier le payload nécessite de recalculer la signature avec la clé secrète. Des attaques avancées incluent : l'injection via le paramètre kid (Key ID dans le header, utilisé pour sélectionner la clé de vérification - peut être exploité pour des SQLi ou des path traversal si utilisé tel quel dans une requête), le JWK Set URL injection (si le header jwks_uri est pris en compte, l'attaquant peut pointer vers son propre JWK set avec ses propres clés), et les attaques de désérialisation sur les claims non standards. Des outils comme jwt.io pour décoder, jwt_tool pour tester les vulnérabilités, et des modules Burp Suite pour l'audit JWT facilitent les tests.
Fonctionnement
Algorithme 'none' bypass : decoder le JWT (base64_decode(header) → {"alg":"RS256","typ":"JWT"}), modifier l'header ({"alg":"none","typ":"JWT"}) et le payload (changer role:user → role:admin), reconstruire newHeader.newPayload. (signature vide). Soumettre ce token : si le serveur accepte alg=none, il valide sans vérification de signature. jwt_tool automatise : python3 jwt_tool.py TOKEN -X a teste alg=none automatiquement.
Exploitation offensive
Les JWT attacks sont particulièrement dévastatrices car elles permettent d'usurper l'identité de n'importe quel utilisateur (y compris admin) sans connaître de mot de passe. La confusion d'algorithme RS256→HS256 avec la clé publique disponible (souvent dans un endpoint JWKS public) permet de forger des tokens admin avec une simple modification de l'algorithme et re-signature HMAC.
Détection et mitigation
Utiliser des bibliothèques JWT de confiance avec validation stricte de l'algorithme (whitelist d'algorithmes, refuser alg=none explicitement). Vérifier la clé appropriée selon l'algorithme (ne jamais utiliser une clé publique RSA comme clé HMAC). Rotation courte des clés secrètes. Utiliser des secrets JWT longs (256+ bits aléatoires) résistants au bruteforce. Activer la vérification d'expiration et d'émetteur.
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