Aller au contenu

Secret JWT vide

GravitéÉlevée
CVE
ClassificationsCWE-287: Improper Authentication
Schéma d’attaqueCAPEC-70: Try Common or Default Usernames and Passwords
Catégorie OWASPOWASP API2:2023 Broken Authentication

Cette vulnérabilité survient lorsqu’un JSON Web Token (JWT) est signé avec un secret vide. Dans ce cas, le token n’a aucune protection cryptographique réelle et devient manipulable. Les attaquants peuvent modifier les claims et le contenu du token sans être détectés, ce qui peut mener à un accès non autorisé et à une falsification des données.

Voici un JWT valide signé avec l’algorithme HS256 :

Terminal window
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDI2MjIsImlhdCI6MTUxNjIzOTAyMiwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.SCC35SSgMSMr0kV1i_TuPAhiSGtsC1cFGCfvaus5GyU

Ce JWT décodé contient ces parties :

{
"alg": "HS256",
"typ": "JWT"
}
{
"iat": 1516239022,
"exp": 1516242622,
"name": "John Doe",
"sub": "2cb307ba-bb46-4194-854f-4774046d9c9b"
}

Le JWT suivant est signé avec un secret vide (clé vide — même en-tête et même payload, signature différente) :

Terminal window
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDI2MjIsImlhdCI6MTUxNjIzOTAyMiwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.rpOjSoJBjzZifWAc-MBQ4UVS9tOY7gJV8cN0j6bN1oA

Si vous voulez tester si votre serveur est vulnérable à la vulnérabilité « JWT Blank Secret », vous pouvez utiliser la commande crack :

Terminal window
jwtop crack [token] --url [url]

Pour simplement générer un token avec un secret vide, utilisez la commande exploit blanksecret :

Terminal window
jwtop exploit blanksecret [token]

Signer un JWT avec un secret vide a un impact significatif sur la sécurité du token. Un secret vide signifie qu’aucune clé secrète n’est réellement utilisée pour signer le token, ce qui le rend vulnérable à la falsification et à un accès non autorisé.

En signant un JWT avec un secret vide, n’importe qui ayant accès au token peut en modifier le contenu sans être détecté. Cela peut entraîner divers risques de sécurité, comme l’usurpation d’identité, la falsification de données, et un accès non autorisé à des ressources protégées.

Pour corriger la vulnérabilité du secret JWT vide, assurez-vous que tous les JWT sont signés avec une clé secrète robuste. Utilisez des algorithmes cryptographiques solides et gardez la clé secrète confidentielle pour empêcher tout accès non autorisé et toute falsification des tokens.