Ensemble d'attaques exploitant les implémentations vulnérables de JSON Web Tokens.
Les attaques sur JWT (JSON Web Token) exploitent les faiblesses d'implémentation ou de configuration des bibliothèques JWT pour forger des tokens valides ou bypasser l'authentification. Les principales attaques :
(1) alg=none : certaines bibliothèques acceptent l'algorithme "none" qui indique absence de signature — un attaquant forge un token avec n'importe quel payload et alg=none, l'application l'accepte si elle ne valide pas strictement l'algorithme attendu.
(2) Algorithm confusion (HS256 vs RS256) : un endpoint configuré pour vérifier RS256 (asymétrique) peut être trompé en envoyant un token HS256 (symétrique) signé avec la clé publique RSA — l'app utilise alors la clé publique comme secret HMAC.
(3) Weak secret : les secrets HS256 faibles sont brute-forçables (outils : jwt_tool, hashcat -m 16500). Un secret "password123" est cassé en secondes.
(4) kid injection : le header kid (Key ID) peut être manipulé pour pointer vers un fichier arbitraire (SQL injection, path traversal) ou exécuter une lookup malveillante.
(5) jku/x5u manipulation : forcer l'app à fetcher une clé depuis une URL contrôlée par l'attaquant.
Mitigations : whitelist explicite de l'algorithme (`verify(token, key, algorithms=['RS256'])`), secrets HMAC longs et aléatoires (≥256 bits), validation stricte du claim exp/aud/iss, utilisation de bibliothèques à jour (jose-jwt, PyJWT ≥2.0). Préférer des sessions opaques côté serveur (Redis) plutôt que JWT pour les cas non strictement stateless.
200+ certifications, 400 000+ questions, examens blancs chronométrés.
Voir le catalogue →