1. A5 – Cross Site Request Forgery
Tiago Natel de Moura
2. About Me
• Tiago Natel de Moura aka i4k
• Co-Fundador do BugSec Security Team
• http://bugsec.googlecode.com/
• Co-Fundador do OWASP Florianópolis.
• Consultor de Segurança na SEC+
• www.secplus.com.br
3. O que é CSRF?
• Cross Site Request Forgery é um ataque que
força um usuário a executar ações arbitrárias
numa aplicação web que ele esteja
autenticado.
• Usando diversas técnicas como engenharia
social, XSS, URL encurtadas, etc, um atacante
pode induzer usuários de uma aplicação web a
executar ações de sua escolha.
4. Exemplo 1: Engenharia Social
• http://bank.com/ é vulnerável a CSRF
• Usuário Alice tem conta em Bank e recebe um
spam com o link encurtado:
http://goo.gl/NtNXR
• Se ela clicar no link e coincidir de estar logada
na conta do seu banco ela irá transferir $
5000.00 para a conta do cracker.
7. Exemplo 2: XSS
• http://bank.com/ é vulnerável a CSRF.
• Alice tem conta em Bank e também visita o
blog de Bob que é vulnerável a XSS.
• Atacante posta um comentário no blog de Bob
com uma imagem invisível <img
src=”http://bank.com/transfer.do?
dest_acc=6666&amount=5000” width="1"
height="1" border="0" />
• Quando Alice visitar o blog de Bob seu
navegador irá tentar requisitar a imagem na
8. Alvos
• Internet Banking
• Redes Sociais
• WebMail
• Intranets
• outros
14. CSRF
• Fechar um evento:
– GET /index.php/events/topic/close/close/1/event_id/2/topic_id/2
• Abrir um evento:
– GET /index.php/events/topic/close/close/0/event_id/2/topic_id/2
• Fechar um tópico do fórum:
– GET /index.php/forums/topic/4/example-topic/close/close/1
• Abrir um tópico do fórum:
– GET /index.php/forums/topic/4/example-topic/close/close/0
15. Contra-Medidas e Proteções
• Para áreas críticas:
– Envie um token único em cada requisição.
• Esse token deve identificar a sessão atual do usuário.
Usando a Session do servidor web e opcionalmente em
conjunto com outras informações (UserAgent, Referer,
etc).
– Valide o Referer
– Impossibilite XSS nessas áreas (não reflita inputs
do usuário nem apresente informações
persistidas).