CSRF - Cross Site Request Forgery

CSRF (Cross-Site Request Forgery)

Falsificação de Solicitação entre Sites

O que é CSRF?

Cross-Site Request Forgery (CSRF) é uma vulnerabilidade de segurança que engana o navegador de um usuário autenticado para executar ações indesejadas em um site no qual já está logado. Em outras palavras, o ataque força o navegador a fazer requisições para outro site como se fosse o próprio usuário, sem o seu conhecimento.

Como o Ataque Funciona? (Mecanismo)

  1. Vítima Autenticada O usuário faz login em um site vulnerável (ex: vulnerable-website.com) e o navegador armazena a sessão, geralmente através de cookies.

  2. Requisição Falsa O site do atacante contém um código oculto (formulário, <img>, <script>, etc.) que envia uma requisição ao site vulnerável.

  3. Ação Indesejada O navegador da vítima, ao processar o código malicioso, envia automaticamente a requisição junto com os cookies de sessão para o site vulnerável.

  4. Sucesso do Ataque O site vulnerável recebe uma requisição válida e executa a ação (transferir fundos, alterar senha, etc.) acreditando que foi o próprio usuário quem solicitou.

Impactos de um Ataque CSRF Bem-Sucedido

  • Alterar a senha ou e-mail da conta da vítima.

  • Realizar transferências de fundos.

  • Fazer compras ou postar conteúdo em nome da vítima.

  • Excluir dados importantes.

  • Se a conta da vítima for de um administrador, o atacante pode comprometer todo o sistema.

Condições para um Ataque CSRF

  1. Ação Relevante: Deve existir uma ação no site que o atacante queira executar (ex: mudar senha, transferir dinheiro).

  2. Autenticação Baseada em Sessão: A aplicação deve usar apenas cookies de sessão para identificar o usuário, sem validar a origem da requisição.

  3. Parâmetros Previsíveis: Os parâmetros da requisição (como valores de formulário) não devem conter valores imprevisíveis que o atacante não consiga adivinhar.

Prevenção: Como se Defender do CSRF?

  • Tokens Anti-CSRF (método mais comum e robusto).

  • Atributo SameSite nos Cookies.

  • Verificação do cabeçalho Referer (uso adicional de defesa).

  • Exigir interação do usuário para ações sensíveis (confirmações, reautenticação, captchas).

Defesa Principal: Tokens Anti-CSRF

O que é? Um valor único, secreto e imprevisível gerado pelo servidor para cada sessão de usuário.

Como funciona?

  • O servidor insere o token em um campo oculto dos formulários HTML.

  • Quando o usuário envia o formulário, o token é enviado de volta ao servidor.

  • O servidor valida se o token recebido corresponde ao gerado para aquela sessão.

Por que funciona? O atacante não tem acesso ao token da vítima, logo não consegue incluí-lo na requisição forjada, que é então rejeitada pelo servidor.

Defesa Adicional: Atributo SameSite nos Cookies

O atributo SameSite instrui o navegador sobre quando enviar cookies em requisições entre sites:

  • SameSite=Strict Navegador não envia cookies em nenhuma requisição cross-site. Proteção mais forte.

  • SameSite=Lax Navegador envia cookies apenas em requisições de navegação de nível superior (ex: cliques em links), mas bloqueia requisições POST típicas de ataques CSRF.

  • SameSite=None Desabilita a proteção.

Recomendação: Usar Strict ou Lax para adicionar uma camada significativa de defesa.

Referências

Autor

Membro de Networking - leandrobalta

Atualizado