Aller au contenu

Injection d'en-tête X5C JWT

GravitéÉlevée
Classifications
Catégorie OWASPOWASP API2:2023 Broken Authentication

La vulnérabilité « Injection d’en-tête X5C JWT » survient lorsqu’un serveur vérifie un token à l’aide de la chaîne de certificats X.509 fournie dans l’en-tête x5c du token lui-même, sans vérifier que le certificat remonte à une AC de confiance. Comme l’attaquant contrôle l’en-tête, il peut y intégrer un certificat auto-signé pour une paire de clés qu’il a générée et signer le token avec la clé privée correspondante.

Pour plus de détails, consultez la documentation jwtop sur l’injection X5C.

  1. L’attaquant génère une paire de clés et un certificat auto-signé.
  2. Il construit un token avec les revendications souhaitées et un en-tête "x5c": ["<certificat de l'attaquant>"].
  3. Il le signe avec la clé privée correspondante.
  4. Le serveur extrait le certificat de x5c, utilise sa clé publique pour vérifier la signature et accepte le token.

Si vous voulez tester uniquement la vulnérabilité « Injection d’en-tête X5C JWT », vous pouvez utiliser la commande suivante :

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

Ce contrôle ne s’exécute que lorsque le token testé utilise un algorithme asymétrique et qu’un serveur en ligne est disponible.

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

  • Contournement total de l’authentification : un attaquant peut falsifier des tokens pour n’importe quel utilisateur, y compris les comptes d’administration.
  • Usurpation de compte : se faire passer pour n’importe quel utilisateur du système.
  • Accès non autorisé : accès à des données sensibles et à des fonctionnalités privilégiées.
  • Ignorer les certificats fournis dans le token : ne résolvez jamais la clé de vérification à partir des en-têtes x5c ou x5u. Utilisez une clé ou un certificat configuré hors bande.
  • Valider la chaîne : si x5c doit être utilisé, vérifiez que le certificat remonte à une AC de confiance épinglée et correspond au sujet attendu.
  • Application stricte de l’algorithme : fixez toujours le ou les algorithmes attendus lors de la vérification d’un JWT.