Pular para o conteúdo
SECVOLTaudit

Teste de segurança para apps feitos no v0

Apps do v0 nascem em Next.js, com route handlers que muitas vezes não verificam sessão. Testamos cada rota como se fôssemos o primeiro atacante a encontrá-la.

Em uma frase: No v0, route handlers nascem sem sessão: a rota responde para quem chamar.

Por que isso acontece no v0

O v0 gera Next.js com route handlers. Sem middleware de sessão, a rota responde para qualquer chamada — e o segredo do servidor pode acabar em um client component.

O que costuma ficar aberto

  1. Route handler sem sessão. A rota responde sem checar usuário.
  2. Chave no client component. Segredo de servidor embutido no bundle.
  3. CORS com credenciais. Origem arbitrária lê resposta autenticada.
  4. Server action sem validação. Ação aceita payload forjado.
  5. Sem limite em endpoint de IA. Custo ilimitado por requisição.

Exemplo real

Route handler administrativo sem sessão

GET /api/admin/users HTTP/2
(sem cookie)

200 · 412 registros · sem autenticação

O handler foi gerado sem verificação de sessão ou papel.

O que testamos

Vinte verificações: OWASP API Top 10 aplicado ao stack, mais configuração de banco, segredos no bundle, sourcemaps, CORS, rotas de debug e limite de uso. Onze rodam automatizadas; as demais entram na revisão manual de autorização.

O escopo inclui server actions sem validação, CORS com credenciais, rate limit em IA e inventário de rotas administrativas.

Como o laudo trata esse achado

A evidência entra com método, caminho e resposta redigida; a severidade considera o que um atacante obtém sem credencial; a correção é escrita para o seu stack, não como aviso genérico. O que não conseguimos reproduzir fica fora do laudo.

Como testar em 10 minutos

  1. Abra uma aba anônima
  2. Chame o handler sem cookie
  3. Envie payload forjado na action
  4. Teste a rota admin com conta comum

O que o teste não cobre

  • Não cobre design de arquitetura
  • Não substitui revisão de código
  • Não garante ausência de falhas

Como funciona

  1. Call de 15 minutos para fechar escopo, alvo e autorização.
  2. Proposta com valor e prazo em 24h.
  3. Teste em 48h, com laudo e correção escrita.

Sinais de que você precisa

  • Route handler responde sem sessão.
  • Server action aceita payload forjado.
  • Chave de servidor está em client component.

Checklist rápido

  • Route handler com sessão
  • Server action validada
  • Chave no servidor
  • CORS restrito
  • Rate limit em IA
  • Rotas admin protegidas

O que fazer agora

  • Verificar sessão e papel no início de cada handler.
  • Mover chave para o servidor e rotacionar.
  • Aplicar rate limit em rotas de IA e login.

Veja também todas as verificações e o checklist de 12 itens.

Perguntas frequentes

O teste funciona em apps do v0?
Sim. Testamos a API que o app expõe, não a plataforma. O que muda é o stack por trás e os padrões típicos de configuração.
Preciso dar acesso ao código?
Não. O teste é black-box: usamos o que está público e as contas de teste que você fornecer.
O teste cobre o banco do v0?
Sim. Verificamos o isolamento por registro e o acesso pela chave pública, além das rotas que expõem dados.
Quanto custa e quanto tempo leva?
O escopo e o valor são fechados na call de 15 minutos, com proposta escrita em 24h. A execução entrega em 48h após o escopo assinado.