![Page 1: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/1.jpg)
Falsificação de solicitação entre sites - CSRF
RAFAEL TAVARES ANDRADE TOLEDO
CROSS-SITE REQUEST FORGERY
![Page 2: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/2.jpg)
Agenda
Historia
Conceito
Funcionamento
Possibilidades de Ataques
O Ataque – Exemplo
Politica de mesma origem – Same-origin policy
A Solução
Referências
![Page 3: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/3.jpg)
Historia
Primeiros casos 2001. Cerca de 18 milhões de usuários do eBay na Coréia perdeu a
informação pessoais em fevereiro de 2008. Os clientes de um banco em México foram atacados no início
de 2008 com uma tag de imagem em e-mail. O link da tag de imagem mudou a entrada DNS para o banco em seu roteador ADSL para apontar para um site malicioso se passando pelo banco
![Page 4: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/4.jpg)
Conceito
O Cross-site request forgery é um tipo de exploração maliciosa de um website pelo qual comandos não autorizados são transmitidos para um site malicioso. Ao contrário do XSS, que explora a confiança de um usuário para um site particular, o CSRF explora a confiança que um site tem no navegador do usuário.
![Page 5: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/5.jpg)
Funcionamento – CSRF
![Page 6: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/6.jpg)
Possibilidades de Ataques Tags
<img src=“https://bank.com/fn?param=1”>
<iframe src=“https://bank.com/fn?param=1”>
<script src=“https://bank.com/fn?param=1”>
Posts automáticos em forms<body onload="document.forms[0].submit()">
<form method="POST" action=“https://bank.com/fn”>
<input type="hidden" name="sp" value="8109"/>
</form>
XmlHttpRequest Sujeito a politica de mesma origem
![Page 7: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/7.jpg)
O Ataque
Alice deseja transferir R$ 100,00 a João usando banco.com.br. O pedido gerado por Alice será semelhante ao seguinte:
No entanto, percebe que Maria da mesma aplicação web irá executar a mesma transferência usando parâmetros de URL da seguinte forma:
![Page 8: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/8.jpg)
O Ataque
Maria decide agora para explorar esta vulnerabilidade de aplicações web usando Alice como sua vítima. Maria primeiro constrói a seguinte URL, que vai transferir R$ 100.000,00 da conta de Alice à sua conta:
Agora que seu pedido mal-intencionado é gerado, Maria tem truque para apresentar o pedido. O método mais básico é o de enviar um e-mail HTML para Alice contendo o seguinte:
![Page 9: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/9.jpg)
O Ataque
Supondo que Alice esta autenticada com a aplicação, quando ela clica no link, a transferência de R$ 100.000 para a conta de Maria irá ocorrer.
No entanto, Maria percebe que se Alice clica no link, em seguida, Alice vai notar que a transferência ocorreu.
Por isso, Maria decide esconder o ataque em uma imagem de zero bytes:
![Page 10: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/10.jpg)
O Ataque
Se essa tag de imagem for incluída no e-mail, Alice só vê uma pequena caixa que indica que o navegador não pode processar a imagem. No entanto, o navegador continua a enviar a solicitação para banco.com.br sem qualquer indicação visual de que atransferência tenha ocorrido.
![Page 11: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/11.jpg)
A Solução
A solução para o problema de CSRF é gerar uma chave única quando o usuário visita a página com o formulário.
Vamos definir esta chave na $_SESSION, bem como um campo hidden no formulário.
Quando o formulário for enviado, vamos verificar a chave armazenada na sessão e a chave enviada pelo formulário. Se eles são os mesmos então nós sabemos que o usuário submeteu nosso formulário. Se eles não são iguais (ou a $_SESSION está vazia), então sabemos que algo nocivo está acontecendo e nós podemos seguramente redirecionar o usuário (e não tomar nenhuma ação).
![Page 12: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/12.jpg)
Solução
![Page 13: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/13.jpg)
Solução
Podemos acrescentar um nível adicional de segurança, certificando-se o usuário veio a partir da página que contém o formulário.
![Page 14: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/14.jpg)
Funcionamento – Politica de mesma origem
A política de mesma origem restringe como um documento ou script carregado a partir de uma origem pode interagir com um recurso de outra origem.
![Page 15: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/15.jpg)
Funcionamento – Politica de mesma origem Mozilla considera duas páginas para ter a mesma origem, se o protocolo, porta (se
informado), e o host/domínio são os mesmos para ambas as páginas. Para ilustrar, esta tabela dá exemplos de comparações origem para o URL http://store.company.com/dir/page.html .
![Page 16: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/16.jpg)
Solução
RequestPolicy
![Page 17: Falsificação de solicitação entre sites csrf.html](https://reader036.vdocuments.net/reader036/viewer/2022062420/55ce3d62bb61eb50618b460f/html5/thumbnails/17.jpg)
Referências
https://www.w3.org/Security/wiki/Same_Origin_Policy
http://www.owasp.org/index.php/Cross-Site_Request_Forgery
http://www.cgisecurity.com/articles/csrf-faq.shtml
http://www.darkreading.com/document.asp?doc_id=107651&WT.svl=news1_2
HTTP://RAFAELTAVARES.CO/APRESENTACOES