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)
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.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.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.
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
Ação Relevante: Deve existir uma ação no site que o atacante queira executar (ex: mudar senha, transferir dinheiro).
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.
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
ouLax
para adicionar uma camada significativa de defesa.
Referências
Autor
Atualizado