Cross-Site Request Forgery
O que é Cross-Site Request Forgery?
O cross-site request forgery se baseia no uso de engenharia social, onde o atacante usa o navegador da vitima para enviar requisições para outros sites. Com o ataque CSRF, o atacante consegue realizar ações em nome da vítima. Um exemplo é quando podemos transferir dinheiro em nome da vítima para outra conta. Esse ataque é feito quando a vítima já está autenticada, pois necessita de permissão para realizar transações ou ações que a conta possuí.
Como funciona um ataque CSRF?
O principal ponto do CSRF é realizar alterações no estado do sistema.
- Sessão ativa: Você acessa sua conta e recebe os cookies da aplicação.
- O Gatilho: Você recebe por e-mail um link e acaba clicando dele.
- O Redirecionamento: Você acessa novamente e vê que não tem mais a conta.
O link que você clica, direciona para um site onde o atacante tem total controle. O atacante fez o site para a partir do momento que você entrar, o navegado dispara a requisição para o site original, pois o seu navegador vê que a requisição é para o site legítimo e, automaticamente, anexa os cookies de sessão e, por fim, deletando sua conta.
Por que acontece?
O CRSF aproveita a fraqueza no processo de autenticação dos sites. Quando você acessa um site que requer um login para usa-lo, geralmente o site armazena um ID de sessão em um cookie de sessão para que não precise realizar o processo de login toda vez que você acessa o site.
Prevenção
- Implementar métodos de autenticação mais seguros.
- Utilizar Anti-CSRF, pois são tokens únicos que o servidor valida em cada requisição.
- Nunca utilizar o método
GETpara alterar qualquer dado no backend. - Exigir 2FA (Autenticação de dois fatores).
- Usar SameSite para criar restrições em cada cookie criado, para impedir que cookies sejam enviados em requisições vindas de outros sites.
Referências:
https://portswigger.net/web-security/csrf/preventing
https://www.amazon.com.br/Bug-Bounty-Bootcamp-Reporting-Vulnerabilities/dp/1718501544