Méthodes HTTP TRACE et TRACK activées
| Identifiants de scan | misconfiguration.http_trace, misconfiguration.http_track |
|---|---|
| Gravité | Info |
| Classifications | CWE-489: Active Debug Code |
| Catégorie OWASP | OWASP API8:2023 Security Misconfiguration |
Les méthodes HTTP TRACE et TRACK sont des méthodes de débogage qui demandent au serveur web de renvoyer en écho la requête entrante complète — y compris tous les en-têtes — dans le corps de la réponse. Cela signifie que tout en-tête Authorization, Cookie, ou personnalisé envoyé avec la requête est renvoyé tel quel dans la réponse.
Dans une attaque de Cross-Site Tracing (XST), un script exécuté dans un navigateur pouvant émettre des requêtes TRACE pourrait utiliser ce comportement d’écho pour voler des cookies HttpOnly ou des en-têtes d’autorisation normalement inaccessibles à JavaScript. Bien que les politiques de sécurité des navigateurs modernes (CSP, CORS, SameSite) atténuent de nombreux chemins XST, laisser TRACE/TRACK activés viole le principe du moindre privilège et peut exposer des en-têtes sensibles dans des journaux, des proxies, ou des environnements moins protégés.
Exemple
Section titled “Exemple”TRACE /api/users HTTP/1.1Host: api.example.comAuthorization: Bearer eyJhbGciOiJSUzI1NiI...X-Custom-Internal: secret
HTTP/1.1 200 OKContent-Type: message/http
TRACE /api/users HTTP/1.1Host: api.example.comAuthorization: Bearer eyJhbGciOiJSUzI1NiI...X-Custom-Internal: secretLa requête complète — y compris Authorization — est reflétée dans le corps de la réponse.
Comment tester ?
Section titled “Comment tester ?”vulnapi scan curl [url] -H "Authorization: Bearer eyJhbGciOiJSUzUxMiI..." --scans misconfiguration.http_trace --scans misconfiguration.http_trackecho "eyJhbGciOiJSUzUxMiI..." | vulnapi scan openapi [OpenAPI_Path_Or_URL] --scans misconfiguration.http_trace --scans misconfiguration.http_trackvulnapi scan graphql -H "Authorization: Bearer eyJhbGciOiJSUzUxMiI..." --scans misconfiguration.http_trace --scans misconfiguration.http_track [url]VulnAPI prend aussi en charge le scan d’autres types de vulnérabilités.
Quel est l’impact ?
Section titled “Quel est l’impact ?”- Exposition d’en-têtes :
Authorization,Cookie, et les en-têtes internes personnalisés envoyés avec une requête TRACE sont reflétés dans le corps de la réponse, les rendant lisibles par toute partie pouvant observer la réponse (proxies intermédiaires, journaux, scripts de navigateur dans certaines conditions). - Fuite d’informations de débogage : des en-têtes internes (
X-Internal-User,X-Request-ID, etc.) normalement invisibles aux clients peuvent être exposés. - Cross-Site Tracing (XST) : dans des environnements de navigateur plus anciens ou combiné à d’autres vulnérabilités, TRACE peut être utilisé pour voler des identifiants depuis des clients basés navigateur.
Comment corriger ?
Section titled “Comment corriger ?”Désactivez TRACE et TRACK au niveau du serveur web.
Nginx — restreindre aux méthodes autorisées uniquement :
location / { limit_except GET POST PUT DELETE PATCH OPTIONS { deny all; }}Apache — désactiver TRACE globalement :
TraceEnable OffExpress (Node.js) — rejeter TRACE/TRACK dans un middleware :
app.use((req, res, next) => { if (req.method === 'TRACE' || req.method === 'TRACK') { return res.status(405).send('Method Not Allowed'); } next();});Vérifiez la correction en vérifiant que TRACE renvoie une réponse 405 Method Not Allowed :
curl -X TRACE https://api.example.com/ -i# Attendu : HTTP/1.1 405 Method Not Allowed