Cross-Site Request Forgery (do inglês Falsificação de Requisição por Site Cruzado), ou simplesmente CSRF, é um tipo de ataque virtual que se baseia no aproveitamento de sessões HTTP/HTTPS iniciadas em um browser.
Com uma pequena ajuda de engenharia social (como o envio de um link por e-mail ou chat), um atacante pode enganar os usuários de um aplicativo web e executar ações de escolha do atacante. Se a vítima for um usuário normal, um ataque CSRF bem sucedido pode forçar o usuário a realizar uma transferência bancária, compras e se for uma conta administrativa, CSFR pode comprometer toda a aplicação web.
Para a maioria dos sites, solicitações de navegador incluem automaticamente as credenciais associadas com o site, como cookie de sessão do usuário, endereço de IP, as credenciais de domínio do Windows, e assim por diante. Portanto, se o usuário está autenticado no site, o site não terá nenhuma maneira de distinguir entre o pedido forjado enviado pela vítima e um pedido legítimo enviado pela vítima.
Abaixo, vamos demostrar este tipo de ataque e como bloquear no ASM.
1- Como funciona o ataque?
Como já dito, o ataque se aproveita de uma sessão HTTP ou HTTPS iniciada em uma aplicação web, podendo realizar requisições de outra aplicação utilizando essa mesma sessão. Em outras palavras, o caminho para um ataque CSRF.
- O usuário inicia uma instância do browser
- O usuário inicia uma sessão de login em uma aplicação web
- O usuário acessa um site malicioso que contém um procedimento de ataque CSRF
- A aplicação maliciosa manipula a sessão da aplicação web utilizada pela instância do browser
- A aplicação executa seus ataques autenticada na aplicação web através da instância do browser
Antes de mostrar um exemplo do ataque, vamos habilitar o CSRF no ASM para identificarmos o ataque.
2- Habilitando CSRF Protection
2.1 Na guia Main, clique em Security > Application Security > CSRF Protection. A tela CSRF Protection é aberta.
2.2 Selecione o check box CSRF Protection.
2.3 Se você deseja que o cookie de sessão expire:
- Para Expiration Time, selecione Enabled.
- No campo, digite a quantidade de tempo, em segundos (1-99999), que o cookie deve expirar. O padrão é 600 segundos.
2.4 Na configuração URLs List, especificar as URLs que você deseja que o sistema examine.
- Digite a URL no formato /index.html. Você também pode usar curingas para URLs; por exemplo /myaccount/*.html, /*/index.php, ou /index.?html.
- Clique em Add
- Adicione todas as URLs potencialmente inseguras que deseja que o sistema examine.
2.5 Clique em Save para salvar suas configurações.
2.6 Clique em Apply Policy para aplicar as configurações.
Quando o recurso de proteção CSRF é ativado, o sistema insere JavaScript personalizado acrescentando o token BIG-IP ASM CSRT para cada URI.
Por exemplo, a página de resposta HTML contém a seguinte referência URI:
http://192.168.10.201/user_menu.php?nick=username10
Com CSRF habilitado, o sistema BIG-IP ASM recriará a referência URI para aparecer semelhante ao exemplo da imagem acima, adicionando o token CSRT:
http://192.168.10.201/user_menu.php?nick=username10&csrt=15682644742086290742
3- Exemplo Prático
Para entender melhor esse processo vamos apresentar um exemplo prático de um ataque CSRF. No exemplo abaixo, vamos simular o ataque utilizando uma sessão “roubada” e utilizar e método GET na aplicação.
O endereço do site é http://192.168.10.201/e da acesso para a página de autenticação. Vou colocar meu usuário e senha, me autenticando na aplicação.
Acesso realizado a partir da maquina_01.
Veja que eu entro no link “Your Control Panel” e vejo minhas informações pessoais.
Na imagem em destaque vermelho a SESSION do acesso.
Agora vamos simular o ataque a partir da maquina_02 usando a mesma sessão da maquina_01 e explorar a vulnerabilidade com o método GET inserindo na URL o parâmetro ‘’*“ substituindo username10.
Usamos o Burp Suite para encontrar as vulnerabilidades e aplicar o GET na aplicação.
Resultado do GET vai mostrar as informações dos usuários cadastrados no sistema:
Agora vamos analisar os logs no BIG-IP ASM.
Em Security > Application Security > Policy Building > Manual Traffic Learning mostra que o ataque CSRF foi detectado.
Vamos clicar no evento para detalhamente completo.
O resultado foi Response Code 200, ou seja, GET com sucesso.
A aplicação aceitou enviar um GET utilizando a mesma sessão da maquina_01 onde utilizando o parâmetro ‘’*“ conseguimos extrair informações dos demais usuários cadastrados no sistema.
4- Bloqueando ataques CSRF
Para bloquear ataques CSRF, você deve definir a politica para modo Blocking e selecionar para block uma ou ambas as violações CSRF, e também configurar o recurso CSRF Protection na política (neste caso já esta configurado).
Na guia Main, clique em Security > Application Security > Blocking > Settings
Agora vamos realizar o mesmo teste que realizamos no 3 – Exemplo Prático com a regra em modo Blocking e bloqueando as violaçoes CSRF
Teste a partir da maquina_02 com Burp Suite.
Veja que a resposta foi rejeitada.
Vamos analisar os logs do BIG-IP ASM no Event Logs.
Resultado:
Request Status = Block
Response Code = N/A, ou seja, nenhuma resposta do servidor.
De acordo com a Open Web Application Security Project (OWASP), ataque CSRF esta entre o top 10 das vulnerabilidades de maior ameaça para a aplicação Web.
Este TechTip tem o objetivo de demonstrar o potencial do ataque CSRF e como mitigar o ataque por meio do BIG-IP ASM habilitando o recurso CSRF Protection. Além disso, conscientizar os usuários da ameaça.
Recomendamos também:
- Usuários devem sair de aplicações web quando terminarem de usá-las.
- Use o navegador da Web com segurança – o que significa certificando-se de não salvar as credenciais de login no navegador da web e usando extensões do navegador legítimos e seguros.
- Finalmente, você deve analisar o seu site usando um scanner de vulnerabilidade web para detectar eventuais vulnerabilidades falsificação de solicitação entre sites para que você possa corrigi-los antes que eles causem quaisquer problemas.