Cross-Site Tracing quase 10 anos depois
Em muitos relatórios de análise de vulnerabilidades é comum encontrar instruções para desabilitar o método "TRACE" dos servidores web para não acarretar na vulnerabilidade Cross-Site Tracing (XST), mas poucas pessoas sabem explicar o funcionamento deste ataque e as implicações caso esse ataque seja bem-sucedido. Pensando nisso, tentei fazer um screencast, mas a gravação falhou miseravelmente. Ainda assim, vocês podem conferir ele logo abaixo, mas antes de fazê-lo, é necessário que alguns itens sejam esclarecidos:
Pré-requisito: entender o conceito de Cookie.
Resumo: quando falamos de Cross-Site Scripting (XSS), um dos possíveis cenários é aquele em que o atacante consegue ler o cookie da vítima pela linguagem Javascript (ex: alert(document.cookie)) e enviar o seu conteúdo para o site do atacante visando um posterior sequestro de sessão. Em busca de soluções para problemas como este, foi criada a flag HttpOnly, que não permite a manipulação do cookie pela linguagem Javascript, permitindo que o cookie apenas trafegue nas requisições HTTP.
Surge então o Cross-Site Tracing que consegue, entre outras explorações, obter o conteúdo de um cookie com a flag HttpOnly graças ao método TRACE habilitado nos servidores web (Veja aqui a RFC com todos os métodos se tiver curiosidade). Visto que o método TRACE repete a requisição HTTP na resposta HTTP, é possível descobrir o que foi enviado na requisição, inclusive os cookies que foram enviados.
Acontece que a descoberta dessa vulnerabilidade vai fazer 10 anos em seu próximo aniversário, e os navegadores estão bastante precavidos com esse tipo de ataque, bloqueando as requisições TRACE feitas por Javascript. O único jeito, caso nenhum navegador permita enviar as requisições TRACE, é verificar se outros elementos da página web gerenciados por outros softwares (Java applet, Adobe Flash, etc) conseguem realizar tal tarefa.
Os objetivos deste vídeo são: - Apresentar como identificar se o método TRACE está habilitado no servidor utilizando telnet - Apresentar o funcionamento da flag HttpOnly - Apresentar as proteções de Cross-Site Tracing presentes nos navegadores Internet Explorer (10.0.9200.16466), Firefox (14.0.1) e Google Chrome (23.0.1271.97 m)
Obs: Selecione a qualidade 720p (HD) para não enxergar embaçado:
Links úteis e referências:
- Desabilitar Trace no Apache - http://www.ducea.com/2007/10/22/apache-tips-disable-the-http-trace-method/
- White Paper (mesmo do vídeo) - http://www.cgisecurity.com/whitehat-mirror/WH-WhitePaperXSTebook.pdf
- http://deadliestwebattacks.com/category/cross-site-tracing/
- http://www.stopthehacker.com/2009/11/12/xst-one-of-the-most-prevalent-security-holes/