Disatilitar HTTP Trace (XST)

Introdução

Um possível ataque HTTP sobre aplicações Web é o Cross-site tracing ou seu acronimo XST.

Para verificar se o host esta vulnerável a este tipo de ataque, pode-se utilizar o comando telnet. Se o resultado for como abaixo, o host estará vulnerável a ataques do tipo XST.

Exemplo:
$telnet www.incolume.com.br 80
Trying 10.1.2.121...
Connected to www.incolume.com.br.
Escape character is '^]'.
$TRACE / HTTP/1.0
$Header1: <script>alert(document.cookie);</script>


HTTP/1.1 200 OK
Date: Thu, 31 Jan 2013 11:52:52 GMT
Server: Apache/2.2.3 (CentOS) DAV/2
Connection: close
Content-Type: message/http

TRACE / HTTP/1.0
Header1: <script>alert(document.cookie);</script>

Connection closed by foreign host.


Como bloquear


mod_rewrite deve estar ativo para configuração das diretivas abaixo.

Disabilitar o TRACE no escopo principal do conf.d/rewrite.conf ou sites-available/rewrite.conf:
TraceEnable off

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

Disabilitar o TRACE no escopo de VirtualHost:
<VirtualHost www.example.com>
...
# disable TRACE in the www.example.com virtual host
TraceEnable off
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
...
</VirtualHost>

Se após o teste o resultado for como abaixo, o host não estará mais vulnerável a ataques XSL.
$telnet www.incolume.com.br 80
Trying 10.1.2.121...
Connected to www.incolume.com.br.
Escape character is '^]'.
$TRACE / HTTP/1.0
$Header1: <script>alert(document.cookie);</script>


HTTP/1.1 400 Bad Request
Date: Thu, 31 Jan 2013 20:26:02 GMT
Server: Apache/2.2.3 (CentOS) DAV/2
Content-Length: 344
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
<script>alert(document.cookie);</script></pre>
</p>
</body></html>
Connection closed by foreign host.

Comentários