Injection d'en-tête X5U JWT
| Gravité | Élevée |
|---|---|
| Classifications | |
| Catégorie OWASP | OWASP 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.
Exemple
Section titled “Exemple”- L’attaquant héberge un certificat auto-signé pour une paire de clés qu’il a générée.
- Il construit un token avec les revendications souhaitées et un en-tête
"x5u": "https://attacker.example/cert.pem". - Il le signe avec la clé privée correspondante.
- Le serveur récupère le certificat de l’attaquant, vérifie la signature avec celui-ci et accepte le token.
Comment tester ?
Section titled “Comment tester ?”Si vous voulez tester uniquement la vulnérabilité « Injection d’en-tête X5U JWT », vous pouvez utiliser la commande suivante :
vulnapi scan curl [url] -H "Authorization: Bearer [JWT]" --scans jwt.x5u_injectionecho "[JWT]" | vulnapi scan openapi [OpenAPI_Path_Or_URL] --scans jwt.x5u_injectionvulnapi scan graphql -H "Authorization: Bearer [JWT]" --scans jwt.x5u_injection [url]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.
Quel est l’impact ?
Section titled “Quel est l’impact ?”- 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.
Comment corriger ?
Section titled “Comment corriger ?”- Ignorer les URL fournies dans le token : ne récupérez jamais de clés ou de certificats à partir des en-têtes
x5uoujku. Utilisez un certificat configuré hors bande. - Liste d’autorisation des points de terminaison : si la récupération dynamique est nécessaire, validez
x5uavec 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.