Aller au contenu

Secret JWT vide

GravitéÉlevée
CVEs
ClassificationsCWE-287: Improper Authentication
Catégorie OWASPOWASP API2:2023 Broken Authentication

Une vulnérabilité survient lorsqu’un JSON Web Token (JWT) est signé avec un secret vide. Dans ce scénario, le token manque d’une protection cryptographique adéquate, le rendant susceptible d’être manipulé. Les attaquants peuvent modifier les claims et le contenu du token sans être détectés, pouvant mener à un accès non autorisé et à une falsification des données.

Pour plus de détails, consultez la documentation jwtop sur le secret vide.

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 payload, signature différente) :

Terminal window
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDI2MjIsImlhdCI6MTUxNjIzOTAyMiwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.rpOjSoJBjzZifWAc-MBQ4UVS9tOY7gJV8cN0j6bN1oA

Si vous voulez tester uniquement la vulnérabilité « Secret JWT vide », vous pouvez utiliser la commande suivante :

Terminal window
vulnapi scan curl [url] -H "Authorization: Bearer eyJhbGciOiJSUzUxMiI..." --scans jwt.blank_secret

VulnAPI prend aussi en charge le scan d’autres types de vulnérabilités.

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 utilisée pour signer le token, ce qui le rend vulnérable à la falsification et à l’accès non autorisé.

En signant un JWT avec un secret vide, toute personne ayant accès au token peut en modifier le contenu sans être détectée. Cela peut mener à divers risques de sécurité, tels que l’usurpation d’identité, la falsification de données, et l’accès non autorisé à des ressources protégées.

Pour corriger la vulnérabilité de secret JWT vide, assurez-vous que tous les JWT sont signés avec une clé secrète sécurisée. Utilisez des algorithmes cryptographiques robustes et gardez la clé secrète confidentielle pour empêcher l’accès non autorisé et la falsification des tokens.