Secret JWT vide
| Gravité | Élevée |
|---|---|
| CVE | |
| Classifications | CWE-287: Improper Authentication |
| Schéma d’attaque | CAPEC-70: Try Common or Default Usernames and Passwords |
| Catégorie OWASP | OWASP 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.
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 même payload, signature différente) :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDI2MjIsImlhdCI6MTUxNjIzOTAyMiwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.rpOjSoJBjzZifWAc-MBQ4UVS9tOY7gJV8cN0j6bN1oAComment tester ?
Section titled “Comment tester ?”Si vous voulez tester si votre serveur est vulnérable à la vulnérabilité « JWT Blank Secret », vous pouvez utiliser la commande crack :
jwtop crack [token] --url [url]Pour simplement générer un token avec un secret vide, utilisez la commande exploit blanksecret :
jwtop exploit blanksecret [token]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 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.
Comment corriger ?
Section titled “Comment corriger ?”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.