Cross-Site Request Forgery (CSRF)

Um ataque CSRF força um usuário autenticado (vítima) a enviar uma solicitação HTTP forjada, incluindo o cookie de sessão da vítima para um aplicativo da web vulnerável, o que permite que o invasor force o navegador da vítima a gerar uma solicitação de forma que o aplicativo vulnerável perceba como solicitações legítimas de a vítima.

Vamos entender os Agentes de Ameaça, Vetores de Ataque, Fraqueza de Segurança, Impacto Técnico e Impactos de Negócios dessa falha com a ajuda de um diagrama simples.

Exemplo

Aqui está um exemplo clássico de CSRF -

Step 1 - Digamos que o aplicativo vulnerável envie uma solicitação de alteração de estado como um texto simples, sem qualquer criptografia.

http://bankx.com/app?action=transferFund&amount=3500&destinationAccount=4673243243

Step 2 - Agora o hacker constrói uma solicitação que transfere dinheiro da conta da vítima para a conta do invasor incorporando a solicitação em uma imagem que é armazenada em vários sites sob o controle do invasor -

<img src = "http://bankx.com/app?action=transferFunds&amount=14000&destinationAccount=attackersAcct#" 
   width = "0" height = "0" />

Mãos em

Step 1- Vamos realizar uma falsificação de CSRF incorporando um script Java em uma imagem. O instantâneo do problema está listado abaixo.

Step 2 - Agora precisamos simular a transferência em uma imagem 1x1 e fazer a vítima clicar na mesma.

Step 3 - Ao enviar a mensagem, a mensagem é exibida conforme destacado abaixo.

Step 4- Agora, se a vítima clicar na seguinte URL, a transferência é executada, que pode ser encontrada interceptando a ação do usuário usando o pacote de burp. Podemos ver a transferência localizando-a em Obter mensagem, conforme mostrado abaixo -

Step 5 - Agora, ao clicar em atualizar, a marca de conclusão da lição é exibida.

Mecanismos Preventivos

  • O CSRF pode ser evitado criando um token exclusivo em um campo oculto que seria enviado no corpo da solicitação HTTP em vez de em uma URL, que é mais sujeita à exposição.

  • Forçar o usuário a reautenticar ou provar que são usuários para proteger o CSRF. Por exemplo, CAPTCHA.