← Base de Vulnerabilidades
Client-Side A01:2021-Broken Access Control CVSS 6.5

CSRF — Cross-Site Request Forgery

CSRF força usuários autenticados a executar ações indesejadas. Veja como funciona em SPAs com cookies SameSite, APIs REST e como implementar CSRF tokens corretamente.

Comum em: Ações de formulário HTML, endpoints com autenticação por cookie · Dificuldade: Baixa — simples HTML page

O Que É CSRF

Cross-Site Request Forgery (CSRF) engana um usuário autenticado para executar ações indesejadas em uma aplicação web onde ele está logado. O atacante hospeda uma página que faz uma requisição para a aplicação alvo — o browser envia os cookies automaticamente. Em aplicações modernas com SPA + JWT em localStorage, CSRF é menos comum, mas APIs que usam cookies ainda são vulneráveis se SameSite estiver incorreto.

Exemplo Real de Ataque

HTTP Request / Response
<!-- Página maliciosa em outra origem -->
<!-- Força POST autenticado para a aplicação alvo -->
<html>
<body onload="document.forms[0].submit()">
<form method="POST" action="https://bank.empresa.com.br/api/transferir">
  <input name="para_conta" value="333.333.333-33">
  <input name="valor" value="5000">
  <!-- Sem CSRF token → servidor aceita! -->
</form>
</body>
</html>

Impacto no Negócio e Compliance

Execução de operações financeiras (transferências, compras), alteração de dados de conta (email, senha, chave PIX), ações administrativas. Em sistemas bancários: CSRF em endpoint de transferência pode drenar contas de usuários vítimas com um único clique em link malicioso.

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N

Como Remediar

# ✅ CSRF Token via Double Submit Cookie
import secrets

def generate_csrf_token():
    return secrets.token_urlsafe(32)

# No response: set cookie + retorne no body/header
# Cookie: csrf_token=abc123; SameSite=Strict; Secure
# Header X-CSRF-Token: abc123

# Validação no servidor:
def validate_csrf(request):
    cookie_token = request.cookies.get("csrf_token")
    header_token = request.headers.get("X-CSRF-Token")
    if not cookie_token or cookie_token != header_token:
        raise HTTPException(status_code=403, detail="CSRF validation failed")

# ✅ Alternativa moderna: SameSite=Strict cookies (sem CSRF token necessário)
# Set-Cookie: session=...; SameSite=Strict; Secure; HttpOnly

Como a Veyronn Detecta Esta Vulnerabilidade

Verificamos ausência de CSRF tokens, validação incorreta (comprimento, aleatoriedade), e configurações incorretas de SameSite cookies. Testamos endpoints de ação em formulários HTML e APIs REST que aceitam cookies.

Pronto para Contratar seu Próximo Pentest?

Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.