Secret JWT vide
| Gravité | Élevée |
|---|---|
| CVEs | |
| Classifications | CWE-287: Improper Authentication |
| Catégorie OWASP | OWASP 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.
Exemple
Section titled “Exemple”Voici un JWT valide signé avec l’algorithme HS256 :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDI2MjIsImlhdCI6MTUxNjIzOTAyMiwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.SCC35SSgMSMr0kV1i_TuPAhiSGtsC1cFGCfvaus5GyUCe 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) :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDI2MjIsImlhdCI6MTUxNjIzOTAyMiwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.rpOjSoJBjzZifWAc-MBQ4UVS9tOY7gJV8cN0j6bN1oAComment tester ?
Section titled “Comment tester ?”Si vous voulez tester uniquement la vulnérabilité « Secret JWT vide », vous pouvez utiliser la commande suivante :
vulnapi scan curl [url] -H "Authorization: Bearer eyJhbGciOiJSUzUxMiI..." --scans jwt.blank_secretecho "eyJhbGciOiJSUzUxMiI..." | vulnapi scan openapi [OpenAPI_Path_Or_URL] --scans jwt.blank_secretvulnapi scan graphql -H "Authorization: Bearer eyJhbGciOiJSUzUxMiI..." --scans jwt.blank_secret [url]VulnAPI prend aussi en charge le scan d’autres types de vulnérabilités.
Quel est l’impact ?
Section titled “Quel est l’impact ?”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.
Comment corriger ?
Section titled “Comment corriger ?”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.