Vulnérabilités JWT
Les JSON Web Tokens (JWT) sont un standard très répandu pour représenter des claims entre deux parties. Cependant, une implémentation incorrecte de la vérification des JWT peut entraîner plusieurs vulnérabilités de sécurité critiques.
JWTop fournit des outils intégrés pour tester ces vulnérabilités automatiquement ou manuellement.
Vulnérabilités courantes
Section titled “Vulnérabilités courantes” Algorithme None Accepter des tokens sans signature.
Secret vide Tokens signés avec un secret HMAC vide.
Confusion HMAC Utiliser une clé publique comme secret HMAC.
Injection KID Injecter des payloads via l'en-tête Key ID.
Injection d'en-tête JWK Faire confiance à une clé publique auto-signée intégrée dans le token.
Injection d'en-tête JKU Récupérer et faire confiance à un JWKS depuis une URL contrôlée par l'attaquant.
Injection d'en-tête X5C Faire confiance à un certificat auto-signé intégré dans le token.
Injection d'en-tête X5U Récupérer et faire confiance à un certificat depuis une URL contrôlée par l'attaquant.
Signature nulle Supprimer la signature du token.
Signature psychique Des vérificateurs ECDSA acceptant une signature à zéro (r=0, s=0).
Secret faible Force brute sur des secrets HMAC courants.
Signature non vérifiée Contourner entièrement la vérification de signature.
Attaque par relais inter-services Rejouer des tokens provenant d'autres projets.
Fuzzing des claims Des claims mutés (confusion de type, chaînes surdimensionnées, caractères spéciaux, null) faisant planter le serveur ou révélant une stack trace.
Comment tester
Section titled “Comment tester”Le moyen le plus rapide de tester un serveur en direct contre toutes ces vulnérabilités en une fois est d’utiliser la commande crack :
jwtop crack $TOKEN --url https://api.example.com/protectedPour plus de détails sur chaque vulnérabilité, cliquez sur les cartes ci-dessus.