Aller au contenu

Signature JWT nulle

GravitéÉlevée
CVE
ClassificationsCWE-327: Use of a Broken or Risky Cryptographic Algorithm
Schéma d’attaqueCAPEC-475: Signature Spoofing by Improper Validation
Catégorie OWASPOWASP 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.

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

Terminal window
eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyfQ.MnECRBSUQEi8GjiAyWHPhPhhpzCiMLldkq-N_VS-iwI08c4xEVUhT1Xrx9kNGuwusiQuLI3AOBTPwtbdaasQDCOpF0nxxQNKkufJYFds61ooFZfXCuRyXe1yGnXPRzTfgr5YVe9-T8_JDccx5JP70d9hoO4DU4GNYQMvrOQl4xu8DEyyDT2hsjyTbrodVhrV9znMfEBCsYPPLI-Q-HYLquGThPdJe2kBNA-CiLRV6Mwzji67cTd_4P_oUHKXsAxMqVpo-xC2xiVpO2P9X1__uXrRrfiNFUur4B71UMgGYJ2z_cQqwFfSXz9glBIf_-BJU10Rkmyo2ew862d7WsHx8g

Ce 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) :

Terminal window
eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjkxNTU4MDksImlhdCI6MTcyOTE1MjIwOSwibmFtZSI6IkpvaG4gRG9lIiwic3ViIjoiMmNiMzA3YmEtYmI0Ni00MTk0LTg1NGYtNDc3NDA0NmQ5YzliIn0.

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

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

Pour simplement générer un token avec une signature nulle, utilisez la commande exploit nullsig :

Terminal window
jwtop exploit nullsig [token]

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.

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.