Aller au contenu

Injection d'en-tête X5U JWT

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

La vulnérabilité « Injection d’en-tête X5U JWT » survient lorsqu’un serveur lit l’en-tête x5u (URL X.509) d’un token entrant, récupère le certificat à cette URL et l’utilise pour vérifier la signature sans vérifier qu’il remonte à une AC de confiance. Comme l’attaquant contrôle l’en-tête, il peut pointer x5u vers un serveur qu’il possède, servant un certificat qu’il a généré. C’est aussi une primitive de falsification de requête côté serveur (SSRF).

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

  1. L’attaquant héberge un certificat auto-signé pour une paire de clés qu’il a générée.
  2. Il construit un token avec les revendications souhaitées et un en-tête "x5u": "https://attacker.example/cert.pem".
  3. Il le signe avec la clé privée correspondante.
  4. Le serveur récupère le certificat de l’attaquant, vérifie la signature avec celui-ci et accepte le token.

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

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

Ce contrôle nécessite une cible en ligne capable d’atteindre un serveur de rappel exécuté par le scanner ; il ne s’exécute donc que lorsque le token utilise un algorithme asymétrique et qu’une adresse de rappel joignable a été configurée.

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.
  • Falsification de requête côté serveur (SSRF) : la cible peut être forcée à effectuer des requêtes sortantes vers des URL choisies par l’attaquant.
  • Usurpation de compte : se faire passer pour n’importe quel utilisateur du système.
  • Ignorer les URL fournies dans le token : ne récupérez jamais de clés ou de certificats à partir des en-têtes x5u ou jku. Utilisez un certificat configuré hors bande.
  • Liste d’autorisation des points de terminaison : si la récupération dynamique est nécessaire, validez x5u avec une liste d’autorisation stricte d’URL connues et de confiance, et vérifiez que le certificat remonte à une AC épinglée.
  • Application stricte de l’algorithme : fixez toujours le ou les algorithmes attendus lors de la vérification d’un JWT.