Você abriu o Cursor, descreveu o produto, e em uma tarde tinha login, dashboard e cobrança rodando. A demo funciona. Os clientes entram. E aí está o problema: a demo funciona, mas ela não testa os fluxos onde o dinheiro e os dados moram.
Vibe coding é o nome que colamos nesse jeito de construir em 2026. Você descreve a intenção, a IA escreve o código, você aceita o diff. Claude Code, Cursor, Copilot, v0, Lovable, Replit deixaram a distância entre "ideia" e "SaaS no ar" menor do que nunca. Isso é genuinamente bom. O que ninguém colou junto foi a conta que vem depois: a dívida de segurança que a IA acumula em silêncio enquanto você celebra a velocidade.
A dívida que não aparece na demo
Código gerado por IA não é inseguro por maldade. Ele é inseguro por otimização. O modelo otimiza pra fazer o fluxo feliz funcionar. Ele te entrega a rota que salva o registro, mas não necessariamente a checagem de que aquele usuário pode salvar aquele registro. Ele te entrega o upload de arquivo, mas não o limite de tamanho nem a validação de tipo. Ele te entrega o webhook que recebe o evento de pagamento, mas não a verificação de assinatura que garante que o evento veio mesmo do Stripe.
Nada disso quebra a demo. Tudo isso quebra no incidente.
E o incidente em 2026 não é hipótese. A cadeia de suprimentos de npm virou campo minado. Em março, uma versão comprometida do axios, uma das bibliotecas HTTP mais baixadas do ecossistema, foi usada pra entregar um RAT (trojan de acesso remoto). Em junho, o caso Mastra despejou cerca de 140 pacotes maliciosos no registro de uma vez. Typosquats (pacotes com nome quase igual ao real) continuam roubando segredos de pipelines de CI/CD de quem instala o pacote errado por um caractere. O agente de IA que "resolve o import pra você" não sabe a diferença entre o pacote legítimo e o gêmeo malicioso. Ele instala o que compila.
A tese da RET é simples: a IA deixa qualquer um shipar SaaS rápido, mas os fluxos sensíveis (login, permissão, cobrança, dados por cliente, upload, admin) continuam sendo exatamente onde o vazamento e o prejuízo acontecem. A velocidade não elimina esses fluxos. Ela só faz você passar por cima deles sem olhar.
Por que os fluxos sensíveis são diferentes
Um bug de layout você vê. Um botão que não clica você vê. Uma falha de autorização você não vê, porque do seu lado, logado como você mesmo, tudo funciona. O buraco só aparece quando outra pessoa, com outro id, chama a mesma rota e recebe os dados que não são dela.
Isso é o padrão do vibe coding: o desenvolvedor testa como dono, a IA otimiza pro caminho comum, e o caminho adversário (o cliente curioso, o script automatizado, o atacante) nunca entra no teste. É por isso que a segurança de SaaS feito com IA não é sobre desconfiar da IA. É sobre saber quais fluxos merecem uma segunda passada humana antes de você crescer.
O checklist antes de crescer
Rode isto antes de abrir pra mais usuários. Não é auditoria de banco, é higiene de fundação. Cada item tem um porquê de uma linha.
- AuthZ na rota certa, não no meio. Cada rota que lê ou escreve dado de um cliente precisa checar se o usuário logado tem direito àquele recurso, na própria rota, porque estar logado não é a mesma coisa que ter permissão.
- Isolamento por tenant em toda query. Toda consulta que traz dado de um cliente tem que filtrar pelo dono, senão o cliente A lista os registros do cliente B com uma troca de
id. - Segredo em cofre, não em
envexposta. Chave de API, token e string de conexão vivem em um gerenciador de segredos, nunca commitados nem impressos em log, porque segredo em repositório é segredo vazado. lockfileversionado enpm cino build. Fixe as versões exatas e instale a partir do lock, porquenpm installno servidor pode puxar uma versão nova comprometida entre o teste e o deploy.- Revisão de dependência antes de instalar. Confira o nome exato, o número de downloads e a data do pacote antes de adicionar, porque typosquat e pacote sequestrado entram justamente pela pressa do
add. - Validação de input que faz parse, não só valida. Transforme o input cru em um tipo do seu domínio na borda (com
zodou equivalente) e confie no tipo depois, porque validar e seguir usando o dado cru deixa a brecha aberta. - Rate limit nos endpoints públicos. Login, recuperação de senha e qualquer rota cara precisam de limite por IP e por conta, porque sem isso um script faz brute force e enche sua conta de cloud.
- Webhook assinado e verificado. Todo webhook de pagamento ou provedor externo precisa ter a assinatura conferida antes de agir, porque sem isso qualquer um manda um POST fingindo ser o Stripe e ativa a assinatura de graça.
- Estados de erro que não vazam. Mensagens de erro pro usuário não podem devolver stack trace, query nem caminho de arquivo, porque o atacante lê o erro pra mapear seu sistema.
- Headers de segurança configurados.
Content-Security-Policy,HSTS,X-Content-Type-Optionse afins fecham classes inteiras de ataque de graça, porque o navegador vira seu aliado quando você diz a ele o que bloquear. - Upload com limite e checagem de tipo. Todo upload precisa de teto de tamanho, validação de tipo real (não só a extensão) e armazenamento fora da raiz servível, porque upload livre é execução remota esperando acontecer.
- Fluxos de dinheiro e dado com revisão humana. Cobrança, mudança de plano, exclusão de conta e exportação de dados passam por olho humano no diff, porque esses são os fluxos onde um erro silencioso vira estorno, vazamento ou processo.
- Log sem dado sensível. Não jogue senha, token, PII nem número de cartão no log, porque log é copiado, indexado e lido por muita gente que não deveria ver aquilo.
- Dependência nova só quando necessária. Cada pacote é superfície de ataque nova; prefira o que a linguagem ou o framework já entregam antes de puxar mais uma dependência do registro.
Como usar isto sem parar de shipar
Você não precisa fazer os catorze itens de uma vez. O ponto do checklist é a ordem de prioridade. Se você só tem uma tarde, comece pelos três que mais doem quando falham: autorização na rota, isolamento por tenant e webhook assinado. Esses três protegem dinheiro e dados de outros clientes, que é o tipo de falha que vira manchete e não só ticket.
A IA continua sendo a melhor coisa que aconteceu com a velocidade de produto. Ela não vira contra você. O que vira contra você é tratar o código gerado como pronto só porque a demo passou. Deixe a IA escrever os fluxos. Faça a segunda passada humana nos que tocam dinheiro, permissão e dado de cliente. É barato agora e caríssimo depois.
A dívida de segurança do vibe coding não aparece na demo, ela aparece no incidente.




