Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

JWT Attack

hacking

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis