Pular para o conteúdo
SECVOLTaudit

Teste de segurança para código escrito com opencode

opencode trabalha no terminal e altera o repositório inteiro. O código compila e o app sobe; a fronteira de confiança não vem junto.

Em uma frase: opencode altera o repositório inteiro; a checagem de sessão não vem junto por padrão.

Por que isso acontece no opencode

O agente otimiza para a tarefa funcionar. Sem um pedido explícito de autorização, as rotas nascem sem checagem de sessão e os segredos ficam onde for mais rápido.

O que costuma ficar aberto

  1. Handler sem checagem. A rota responde sem verificar quem chamou.
  2. Segredo em log ou bundle. Credencial aparece onde não deveria.
  3. CORS permissivo. Origem arbitrária lê resposta autenticada.
  4. Validação ausente. Payload inválido é aceito e persistido.
  5. Dependência não revisada. Pacote entrou sem checar origem e idade.

Exemplo real

Rota administrativa aberta

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

200 · lista de usuários e e-mails

O handler foi gerado sem verificação de papel; o front escondia o link.

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 rotas administrativas, validação server-side, CORS, sourcemaps, logs com segredo e limite de uso em endpoints de IA.

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 o app em aba anônima
  2. Chame as rotas de dados
  3. Force erro e leia a resposta
  4. Dispare 20 requisições

O que o teste não cobre

  • Não cobre lógica de negócio
  • Não revisa arquitetura
  • 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

  • O agente alterou rotas e componentes juntos.
  • Não existe teste de autorização no repositório.
  • O front esconde ações que a API ainda aceita.

Checklist rápido

  • Auth por handler
  • Segredo em log
  • CORS restrito
  • Validação server-side
  • Rate limit
  • Dependência revisada

O que fazer agora

  • Checar sessão e papel no início de cada handler.
  • Mover segredo para variável de servidor e rotacionar.
  • Aplicar rate limit e validar payload.

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

Perguntas frequentes

O teste funciona em apps do opencode?
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 opencode?
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.