Teste de segurança para código escrito no Cursor
Com Cursor, o código é seu — mas a revisão de autorização não aconteceu. Testamos a API gerada para verificar se o que o modelo escreveu resiste a um atacante.
Em uma frase: Com Cursor, o código é seu, mas a autorização costuma ficar no componente — e o servidor aceita.
Por que isso acontece no Cursor
O Cursor acelera a escrita, mas não substitui a revisão. A autorização fica no componente, a validação fica no formulário e o servidor aceita o que vier.
O que costuma ficar aberto
- Autorização no cliente. A checagem existe no front e desaparece na rota.
- Segredo hardcoded. Chave de API commitada ou embutida no build.
- Validação ausente no servidor. Payload inválido aceito e persistido.
- IDOR em rotas CRUD. Trocar o ID retorna recurso de outro usuário.
- Dependência inventada. Pacote sugerido pelo modelo que não existe no registro.
Exemplo real
Troca de ID devolve recurso de outro usuário
GET /api/users/42 HTTP/2
Authorization: Bearer <token da conta A>
200 · perfil da conta BA conta A autentica normalmente, mas o servidor não confere o dono do objeto.
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.
Entram no escopo IDOR em rotas CRUD, mass assignment, segredos no build, dependência inexistente e CORS.
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
- Crie duas contas com um recurso cada
- Troque o ID do recurso na requisição
- Envie campos extras no PATCH
- Rode auditoria de dependências
O que o teste não cobre
- Não cobre arquitetura
- Não substitui teste de carga
- Não certifica conformidade
Como funciona
- Call de 15 minutos para fechar escopo, alvo e autorização.
- Proposta com valor e prazo em 24h.
- Teste em 48h, com laudo e correção escrita.
Sinais de que você precisa
- A autorização existe no componente, não na rota.
- PATCH aceita campos que o formulário não mostra.
- Uma dependência entrou sem revisão.
Checklist rápido
- Auth no handler
- IDOR trocando o ID
- PATCH com role/plan
- Segredo no repositório
- Dependência inexistente
- Validação server-side
O que fazer agora
- Checar o dono do recurso em toda leitura e escrita.
- Validar payload com schema no servidor.
- Adicionar um teste de autorização por regra crítica.
Veja também todas as verificações e o checklist de 12 itens.