Auditor de IA|INEMA.CLUB-PRO

Aula 4 · 25 min

Vibe audit: revisar o app que a IA construiu

Fazer app com IA ficou fácil: o gerente descreve, a ferramenta entrega um site com banco de dados em uma tarde. O que a IA não faz sozinha é fechar as portas. Nesta aula você revisa um app desses só lendo: segredo exposto, falta de login, banco aberto e peça velha. Você diagnostica; quem corrige é o time.

Começar a aula
Mãos num teclado de notebook com blocos de código desfocados na tela e uma lupa sobre a mesa.

Nesta aula você vai

  1. 1As 4 camadas que mais falham em app feito por IA
  2. 2Onde o auditor para: diagnóstico, relatório e plano
  3. 3Usar um agente de IA para ler o projeto, sem mexer em nada
  4. 4O checklist de vibe audit, pronto para copiar

Objetivo: achar segredo exposto, rota sem login, banco sem RLS e dependência vulnerável num app feito por IA, só lendo o projeto.

01As 4 camadas do vibe audit

Vibe coding é construir app descrevendo em linguagem comum para a IA. Revise nesta ordem. Clique em cada camada.

Uma quinta camada, cabeçalhos de segurança do site, entra se o escopo permitir e houver tempo. Para PME, as 4 acima resolvem a maior parte.

Você só lê o projeto (cópia ou repositório liberado no termo). Não testa ataque no site no ar.

02Onde o auditor para

O método completo tem 7 etapas. As 3 primeiras são suas; as outras são do time que corrige, e você confere no fim.

1. 1 · Diagnosticar

Leia o projeto nas 4 camadas. Nada é alterado. O que não deu para ver vira "não verificado".

Segredo encontrado: anote arquivo, linha e os 4 primeiros caracteres. Nunca copie a chave inteira.

Achadoapp.js, CONFIG.openaiApiKey: chave de IA no navegador (começa com FAKE…).

03Modelos para copiar: checklist e pedido ao agente

O checklist guia você. O pedido serve para um agente de IA (Claude Code, Codex) ler o projeto sem mudar nada.

Checklist de vibe audit
CHECKLIST DE VIBE AUDIT · <app> · <data> · avaliador: <nome>
Marque: [ok] [achado] [não verificado] — sempre com evidência

SEGREDOS
[ ] Nenhuma chave/senha/token em arquivo que vai para o navegador (.js, .html)
[ ] .env NÃO está no repositório (nem no histórico)
[ ] .gitignore lista .env e arquivos de chave
[ ] Variáveis públicas (ex.: NEXT_PUBLIC_, VITE_) não guardam segredo
[ ] Chave "service_role" ou de administrador nunca no front
[ ] Existe limite de gasto no provedor da IA

LOGIN E ACESSO
[ ] Páginas de admin exigem login
[ ] O login é conferido no servidor, não só escondendo o botão
[ ] Rotas de API conferem a sessão e o papel (admin x cliente)
[ ] Admin tem verificação em 2 etapas

BANCO DE DADOS
[ ] RLS ligada em TODAS as tabelas com dado de cliente ou pedido
[ ] Existe política "cada um vê só o seu"
[ ] Usuário anônimo (anon) não tem permissão de ler/alterar tudo
[ ] Testado com 2 usuários diferentes (um não vê o do outro)

DEPENDÊNCIAS
[ ] Lista de dependências conferida (npm audit ou equivalente)
[ ] Nenhuma versão com falha conhecida (CVE) de gravidade alta
[ ] O framework ainda recebe correções
[ ] Alguém é dono das atualizações

PUBLICAÇÃO
[ ] O app está público de propósito (a plataforma não deixou aberto por padrão)
[ ] Dados de teste não são dados reais de clientes

NÃO VERIFICADO (com motivo): <...>
Pedido ao agente: revisão só leitura
Você vai revisar a segurança deste projeto SÓ LENDO.
Regras:
- Não altere, crie nem apague nenhum arquivo.
- Não rode comando que acesse a internet, instale pacote ou suba servidor.
- Nunca mostre um segredo inteiro: só arquivo, linha e os 4 primeiros caracteres.
- O que você não conseguir confirmar, marque como "não verificado".

Revise 4 camadas e entregue uma tabela
(camada | arquivo:linha | o que achou | por que é risco | gravidade crítica/alta/média/baixa):
1. Segredos: chaves, senhas, tokens em arquivos enviados ao navegador ou ao repositório.
2. Login: páginas e rotas de admin ou internas sem conferência de login no servidor.
3. Banco: tabelas sem RLS, permissões amplas para usuário anônimo.
4. Dependências: versões com vulnerabilidade conhecida (cite o CVE se souber; se não tiver certeza, diga).
No fim, liste o que ficou "não verificado" e por quê.
Simulação: exemplo ilustrativo
  1. Cada achado tem arquivo e linha que você mesmo abriu (não confie só no agente).
  2. Nenhum segredo aparece inteiro.
  3. RLS foi conferida tabela por tabela.
  4. A lista de "não verificado" existe, mesmo que curta.

04Prática

Na empresa-laboratório. Falhas desta aula: F1, F2, F3 e F4, todas no app de pedidos.

1 · As 4 falhas do app de pedidos

35 min

Abra o app de pedidos do laboratório e os arquivos dele (app.js, supabase-config.json, schema.sql, admin.html, package.json). Passe o checklist inteiro.

Pronto quando: você achou as 4 falhas plantadas (F1 a F4), cada uma com arquivo, prova, gravidade pela régua da aula 3 e correção sugerida com o risco da correção.

2 · Uma frase para o dono

10 min

Para cada uma das 4 falhas, escreva uma frase para o Carlos (dono, não técnico) dizendo o que acontece se ninguém fizer nada.

Pronto quando: as 4 frases têm no máximo 25 palavras cada e nenhuma usa sigla sem explicar.

05Teste o que aprendeu

A explicação aparece depois da sua resposta.

Pergunta 1 de 4

O app usa Supabase e a chave "anon" está no código do navegador. Isso, sozinho, é o achado?competência

06Resumo

Quatro camadasSegredos, login, banco (RLS) e dependências. É onde app feito por IA mais falha.
Seu papelDiagnóstico, relatório e plano. O time corrige com backup e teste; você confere com a tabela antes × depois.
Por que importaEm maio de 2026, pesquisadores acharam cerca de 380 mil apps públicos feitos em plataformas de vibe coding, uns 5 mil com dado corporativo sensível. Parte das plataformas deixava o app público por padrão.
EscopoAvaliação e triagem de riscos de IA. Não é pentest, nem resposta a incidente, nem parecer jurídico. Sinal de invasão, vazamento ou dúvida legal: pare e escale.

Para ir além

Aula anteriorPróxima aula