Injection d'en-tête X5C JWT
| Gravité | Élevée |
|---|---|
| Classifications | |
| Catégorie OWASP | OWASP 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.
Exemple
Section titled “Exemple”- L’attaquant génère une paire de clés et un certificat auto-signé.
- Il construit un token avec les revendications souhaitées et un en-tête
"x5c": ["<certificat de l'attaquant>"]. - Il le signe avec la clé privée correspondante.
- Le serveur extrait le certificat de
x5c, utilise sa clé publique pour vérifier la signature et accepte le token.
Comment tester ?
Section titled “Comment tester ?”Si vous voulez tester uniquement la vulnérabilité « Injection d’en-tête X5C JWT », vous pouvez utiliser la commande suivante :
vulnapi scan curl [url] -H "Authorization: Bearer [JWT]" --scans jwt.x5c_injectionecho "[JWT]" | vulnapi scan openapi [OpenAPI_Path_Or_URL] --scans jwt.x5c_injectionvulnapi scan graphql -H "Authorization: Bearer [JWT]" --scans jwt.x5c_injection [url]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.
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.
- 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.
Comment corriger ?
Section titled “Comment corriger ?”- Ignorer les certificats fournis dans le token : ne résolvez jamais la clé de vérification à partir des en-têtes
x5coux5u. Utilisez une clé ou un certificat configuré hors bande. - Valider la chaîne : si
x5cdoit ê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.