Faut-il désactiver la méthode TRACE ?

Tout est dans le titre comme aiment le dire de nombreuses personnes posant une question sur un forum! Je me pose la question depuis plusieurs jours - enfin pour être plus précis, on me demande de la désactiver pour d'obscures problèmes potentiels de sécurité. Et je n'ai pas trouvé de réponse me satisfaisant complétement.

La méthode TRACE est essentiellement utilisée à des fins de débogage. Lorsqu'on utilise cette méthode le serveur renvoie dans le corps de la réponse le contenu exact de ce qu'il a reçu du client. On se sert par exemple de cette méthode pour comprendre ce qui se passe lorsqu'on a des proxy en cascade par exemple. On voit déjà un problème: si cette information peut nous servir en phase de débogage elle peut aussi servir à une personne mal intentionnée pour obtenir des informations sur l'architecture du serveur à moindre coût.

Voici un exemple d'utilisation de TRACE:

$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.1
Host: foo.bar
A: juste A
B: B rien de plus!

HTTP/1.1 200 OK
Date: Thu, 06 Jul 2006 19:18:42 GMT
Server: Apache/2.0.55 (Debian) mod_python/3.2.8 Python/2.3.5 PHP/5.1.4-0.1
Transfer-Encoding: chunked
Content-Type: message/http

43
TRACE / HTTP/1.1
Host: foo.bar
A: juste A
B: B rien de plus!


0
Connection closed by foreign host.

Ca semble anodin mais je vous laisse imaginer les informations que l'on pourrait obtenir. Il semblerait que l'on s'expose à d'autres problèmes notament de faille xss mais je n'ai pas trouvé de liens pertinants.

Quoi qu'il en soit j'ai décidé de désactiver la méthode. C'est possible dans apache 2 et dans apache 1.3 (à partir de la version 1.3.34) avec la directive TraceEnable positionnée à Off.

Si on essaie de nouveau la méthode TRACE on a un accès refusé, erreur http 403

Haut de page