Signature JWT nulle
| Gravité | Élevée |
|---|---|
| CVE | |
| Classifications | CWE-327: Use of a Broken or Risky Cryptographic Algorithm |
| Schéma d’attaque | CAPEC-475: Signature Spoofing by Improper Validation |
| Catégorie OWASP | OWASP API2:2023 Broken Authentication |
La vulnérabilité « JWT Null Signature » survient lorsqu’un JSON Web Token (JWT) n’a pas de partie signature, ce qui permet aux attaquants de manipuler le contenu du token et peut mener à un accès non autorisé et à une falsification des données.
Cette vulnérabilité est proche de la vulnérabilité « JWT Blank Secret », mais dans ce cas le token n’a aucune partie signature, ce qui facilite encore davantage la manipulation de son contenu par les attaquants.
Exemple
Section titled “Exemple”Voici un JWT valide signé avec l’algorithme RS512 :
eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyfQ.MnECRBSUQEi8GjiAyWHPhPhhpzCiMLldkq-N_VS-iwI08c4xEVUhT1Xrx9kNGuwusiQuLI3AOBTPwtbdaasQDCOpF0nxxQNKkufJYFds61ooFZfXCuRyXe1yGnXPRzTfgr5YVe9-T8_JDccx5JP70d9hoO4DU4GNYQMvrOQl4xu8DEyyDT2hsjyTbrodVhrV9znMfEBCsYPPLI-Q-HYLquGThPdJe2kBNA-CiLRV6Mwzji67cTd_4P_oUHKXsAxMqVpo-xC2xiVpO2P9X1__uXrRrfiNFUur4B71UMgGYJ2z_cQqwFfSXz9glBIf_-BJU10Rkmyo2ew862d7WsHx8gCe JWT décodé contient ces parties :
{ "alg": "RS512", "typ": "JWT"}{ "sub": "1234567890", "iat": 1516239022}Le JWT suivant a été dépouillé de sa signature (attaque par signature nulle) :
eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjkxNTU4MDksImlhdCI6MTcyOTE1MjIwOSwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.Comment tester ?
Section titled “Comment tester ?”Si vous voulez tester si votre serveur est vulnérable à la vulnérabilité « JWT Null Signature », vous pouvez utiliser la commande crack :
jwtop crack [token] --url [url]Pour simplement générer un token avec une signature nulle, utilisez la commande exploit nullsig :
jwtop exploit nullsig [token]Quel est l’impact ?
Section titled “Quel est l’impact ?”Signer un JWT avec une signature nulle a un impact significatif sur la sécurité du token. Une signature nulle signifie qu’aucune partie signature n’est utilisée pour signer le token, ce qui le rend vulnérable à la falsification et à un accès non autorisé.
En manipulant le contenu du token, les attaquants peuvent obtenir un accès non autorisé à des données sensibles, usurper l’identité d’utilisateurs, et mener d’autres activités malveillantes.
Comment corriger ?
Section titled “Comment corriger ?”Pour corriger la vulnérabilité « JWT Null Signature », vous devez vous assurer que tous les JWT sont vérifiés avec une signature valide avant d’être traités.
Voici quelques bonnes pratiques à suivre :
- Utilisez toujours un algorithme cryptographique robuste comme HS512, RS512, ou EdDSA pour signer les JWT.
- Assurez-vous que la clé secrète utilisée pour signer les JWT est conservée en sécurité et non exposée à des utilisateurs non autorisés.
- Mettez en œuvre une validation et une désinfection des entrées appropriées pour empêcher les attaquants d’injecter du contenu malveillant dans les JWT.
- Surveillez et auditez régulièrement les JWT pour détecter tout accès non autorisé ou toute tentative de falsification.