Uso ferramentas de IA no meu fluxo de trabalho todo dia. Copilot, Claude, Cursor: já passei por todas. E seria desonesto fingir que não me tornei mais produtivo com elas. Em alguns casos, resolvi em minutos problemas que levariam horas de pesquisa manual.
Mas em algum momento de 2025, comecei a revisar código gerado por IA com o mesmo nível de atenção que daria ao código de um estagiário no primeiro dia. E foi aí que percebi o tamanho do buraco que estava ignorando. Em 2026, esse buraco ficou documentado, rastreado e nomeado. Os dados já existem. E eles são mais sérios do que a maioria dos posts de “produtividade com IA” quer admitir.
Este post não é um manifesto contra IA. É o oposto: é um guia para usar essas ferramentas com responsabilidade real, ancorado nos relatórios e incidentes mais recentes. Porque o hype cresce mais rápido do que a consciência dos riscos.
O Cenário Atual: Adoção Total, Confiança Caindo
Os números de adoção em 2026 são históricos. Segundo o GitHub Octoverse, 41% de todo o código novo em repositórios públicos do GitHub já é gerado por IA, com projeção de chegar a 60% até o fim do ano. O Stack Overflow Developer Survey 2025, com mais de 49.000 respondentes, aponta que 84% dos desenvolvedores usam ou planejam usar ferramentas de IA, sendo que 51% fazem isso diariamente.
Mas o mesmo survey trouxe o dado que mais me chamou atenção: 46% dos desenvolvedores afirmam não confiar na precisão do output das ferramentas de IA, salto expressivo ante os 31% do ano anterior. A principal frustração, citada por 66% dos respondentes: “soluções que parecem certas, mas não são”. A adoção acelerou. A confiança caiu. Isso é exatamente o que acontece quando uma tecnologia é adotada mais rápido do que as melhores práticas ao redor dela.
O Caso Moltbook: Quando o “Vibe Coding” Vai Para Produção Sem Revisão
Em 28 de janeiro de 2026, a Moltbook foi lançada como uma rede social para agentes de IA. Seu fundador declarou publicamente que “não escreveu uma única linha de código”, confiando inteiramente em ferramentas de IA para construir a plataforma. Em menos de três dias, pesquisadores da Wiz descobriram que o banco de dados de produção estava completamente exposto à internet.
O resultado: 1,5 milhão de tokens de autenticação, 35.000 endereços de e-mail e mensagens privadas entre agentes, todos acessíveis sem autenticação. A causa raiz não foi um ataque sofisticado. Foi uma configuração padrão do Supabase gerada pela IA durante o desenvolvimento, que o fundador nunca revisou antes do deploy.
Esse caso virou o estudo de caso de 2026 para o que acontece quando se trata o output da IA como código pronto para produção. Não é teórico. É documentado.
Os Números Que Fundamentam a Preocupação
A Sherlock Forensics conduziu auditorias de segurança entre janeiro e abril de 2026 em 50 aplicações construídas com ferramentas como Cursor, Claude, Copilot e ChatGPT. O resultado: 92% tinham falhas críticas de segurança. E 78% armazenavam secrets em texto plano.
Uma varredura da Escape.tech em 5.600 aplicações construídas via vibe coding (Lovable, Bolt.new, Base44) encontrou mais de 2.000 vulnerabilidades críticas, 400 secrets expostos incluindo chaves de API e tokens, e 175 instâncias de PII como registros médicos e dados de pagamento. Eram aplicações em produção, com usuários reais.
Uma firma de pentest auditou 15 aplicações construídas via vibe coding em março de 2026 e encontrou 69 vulnerabilidades, sendo 6 críticas. O detalhe mais perturbador: nenhuma era exótica. Eram todas do OWASP Top 10: SQL injection, broken authentication, secrets hardcoded, falta de validação de input. Problemas que qualquer desenvolvedor de nível intermediário pegaria numa revisão de código.
O Rastreador de CVEs que Ninguém Estava Fazendo
O Systems Software and Security Lab da Georgia Tech criou em maio de 2025 o “Vibe Security Radar”: uma ferramenta que monitora CVEs em bancos de dados públicos, encontra o commit que introduziu cada vulnerabilidade e rastreia se uma ferramenta de IA foi responsável.
A progressão dos dados é o que mais me preocupa:
- No segundo semestre de 2025: 18 CVEs identificados em sete meses
- Janeiro de 2026: 6 CVEs
- Fevereiro de 2026: 15 CVEs
- Março de 2026: 35 CVEs. Mais que todo o segundo semestre de 2025
Do total de 74 CVEs confirmados, a distribuição por ferramenta: 27 atribuídos ao Claude Code, 4 ao GitHub Copilot, 2 ao Devin, 1 ao Aether e 1 ao Cursor. Os pesquisadores estimam que o número real de vulnerabilidades introduzidas por IA no ecossistema open-source seja de 5 a 10 vezes o que conseguem detectar.
Alguns CVEs concretos que aprendi a citar em conversas sobre o assunto:
- CVE-2025-54135 (CurXecute): permitia que atacantes executassem comandos arbitrários na máquina do desenvolvedor via Cursor, bastando um servidor MCP conectado externamente
- CVE-2025-53109 (EscapeRoute): falha no servidor MCP oficial da Anthropic que permitia leitura e escrita de arquivos arbitrários no disco. As restrições de acesso simplesmente não funcionavam
- CVE-2025-55526 (severidade 9.1): vulnerabilidade de directory traversal no n8n-workflows, atribuída a código gerado pelo Claude Code
- CVE-2025-55284: falha no agente Claude Code que permitia exfiltração de dados via requisições DNS
O Problema do “Funciona, Então Está Pronto”
A Trend Micro publicou em março de 2026 uma análise que resume bem o problema central: vibe coding otimiza para uma única pergunta, “isso funciona?”. Segurança raramente aparece no prompt, e os modelos tratam requisitos não funcionais como secundários.
Veja um padrão clássico que a IA frequentemente gera para autenticação em componentes React:
// Padrão comum gerado por IA: funciona na demo, falha em produção
const Dashboard = ({ userId }: { userId: string }) => {
const [data, setData] = useState(null);
useEffect(() => {
// IA frequentemente implementa auth só no frontend
// o endpoint da API não valida se o userId pertence à sessão atual
fetch(`/api/users/${userId}/data`)
.then(res => res.json())
.then(setData);
}, [userId]);
return <div>{JSON.stringify(data)}</div>;
};
Esse padrão cria um Insecure Direct Object Reference (IDOR): qualquer usuário autenticado pode acessar os dados de qualquer outro usuário simplesmente trocando o userId na URL. A IA implementa a guarda de auth no frontend, esquece de validar no backend. O componente funciona perfeitamente nos testes. A vulnerabilidade vai para produção.
A versão que considero aceitável para produção:
// API Route (Next.js App Router) - validação obrigatória no servidor
// app/api/users/[userId]/data/route.ts
import { getServerSession } from 'next-auth';
import { authOptions } from '@/lib/auth';
import { NextResponse } from 'next/server';
export async function GET(
request: Request,
{ params }: { params: { userId: string } }
) {
const session = await getServerSession(authOptions);
// 1. Usuário está autenticado?
if (!session?.user?.id) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
// 2. O userId da sessão bate com o userId solicitado?
// Nunca confie no userId vindo do cliente
if (session.user.id !== params.userId) {
return NextResponse.json({ error: 'Forbidden' }, { status: 403 });
}
// Só então busque os dados
const data = await getUserData(session.user.id);
return NextResponse.json(data);
}
Slopsquatting: O Ataque Que Nasce das Alucinações de Pacotes
Um estudo publicado no USENIX Security Symposium 2025, conduzido por pesquisadores da University of Texas at San Antonio, University of Oklahoma e Virginia Tech, analisou 576.000 amostras de código geradas por 16 LLMs. O resultado: modelos comerciais como o GPT-4 alucinam nomes de pacotes em 5,2% dos casos. Modelos open-source chegam a 21,7%.
O pesquisador de segurança Seth Larson cunhou o termo “slopsquatting” para descrever o vetor de ataque que emerge daí. O mecanismo é simples:
- Você pede à IA que gere código usando algum pacote npm
- A IA inventa um nome plausível que não existe, por exemplo:
react-form-validator-utils - Um atacante registra esse pacote no npm com código malicioso
- Da próxima vez que um dev faz o mesmo prompt, a IA sugere o mesmo nome
- O dev roda
npm install react-form-validator-utilse executa malware
O que torna isso crítico é a repetibilidade: 58% dos nomes alucinados se repetem em pelo menos 10 runs diferentes do mesmo modelo. Atacantes mapeiam esses nomes facilmente fazendo as mesmas perguntas que qualquer desenvolvedor faria.
A verificação que passei a fazer antes de instalar qualquer pacote sugerido por IA:
# NUNCA instale diretamente um pacote sugerido por IA sem verificar
# Passo 1: confirme que o pacote existe e tem histórico real
npm info nome-do-pacote
# Passo 2: cheque data de publicação, downloads e quem é o publisher
# Pacotes novos, sem histórico de versões e com poucos downloads são suspeitos
npm info nome-do-pacote --json | grep -E '"name"|"version"|"time"|"author"'
# Passo 3: confira o repositório no GitHub antes de instalar
# O link do repositório deve estar no package.json e ser ativo
# Passo 4: após instalar, rode auditoria
npm audit --audit-level=high
O Problema dos Secrets: 28 Milhões de Chaves Expostas em 2025
O GitGuardian contabilizou 28,65 milhões de secrets hardcoded em repositórios públicos do GitHub ao longo de 2025, um aumento de 34% em relação ao ano anterior. O detalhe: chaves de serviços de IA especificamente tiveram crescimento de 81%, chegando a 1,27 milhão de chaves expostas.
O mecanismo é direto. A IA foi treinada em repositórios onde desenvolvedores commitaram credenciais. Os modelos aprenderam que isso é um padrão normal. O relatório de 2026 da ProjectDiscovery, divulgado em abril de 2026 com dados de 200 profissionais de segurança, apontou que 78% dos respondentes listam exposição de secrets como o principal desafio introduzido ou amplificado pelo uso de ferramentas de IA.
Uma verificação que adicionei como pre-commit hook em todos os meus projetos:
# .git/hooks/pre-commit
#!/bin/bash
# Bloqueia commit se detectar padrões de secrets no código
PATTERNS="API_KEY=|SECRET=|TOKEN=|PASSWORD=|PRIVATE_KEY=|sk-|Bearer [A-Za-z0-9]"
if git diff --cached | grep -E "$PATTERNS" | grep -v "process.env\|\.env"; then
echo ""
echo "ERRO: Possível secret detectado no código commitado."
echo "Verifique se você está usando variáveis de ambiente corretamente."
echo "Para ignorar (somente se tiver certeza): git commit --no-verify"
echo ""
exit 1
fi
# Torne o hook executável após criar o arquivo
chmod +x .git/hooks/pre-commit
# Ou use o Husky para gerenciar hooks em projetos de equipe
npm install --save-dev husky
npx husky init
echo "bash .git/hooks/pre-commit" > .husky/pre-commit
XSS e Validação: Os Clássicos que a IA Reintroduz
A Georgetown CSET encontrou vulnerabilidades de Cross-Site Scripting em 86% das amostras de código gerado por IA testadas em cinco modelos principais. A IA não está inventando um novo tipo de vulnerabilidade: ela está reintroduzindo as mais antigas e conhecidas, porque o código de treinamento contém décadas de exemplos sem sanitização adequada.
O padrão que mais encontro em código de IA para Next.js:
// Padrão gerado por IA: validação só no cliente, sem proteção real
'use client';
const CommentForm = () => {
const [comment, setComment] = useState('');
const handleSubmit = async () => {
// IA valida no frontend, esquece completamente do backend
if (comment.length < 10) return;
await fetch('/api/comments', {
method: 'POST',
body: JSON.stringify({ comment }),
});
};
return (
<div>
<textarea value={comment} onChange={e => setComment(e.target.value)} />
<button onClick={handleSubmit}>Enviar</button>
</div>
);
};
// API Route com validação real no servidor
// app/api/comments/route.ts
import { NextResponse } from 'next/server';
import DOMPurify from 'isomorphic-dompurify'; // verificado manualmente antes de instalar
import { z } from 'zod';
const CommentSchema = z.object({
comment: z
.string()
.min(10, 'Comentário muito curto')
.max(1000, 'Comentário muito longo')
.transform(val => DOMPurify.sanitize(val)), // sanitiza antes de salvar
});
export async function POST(request: Request) {
const session = await getServerSession(authOptions);
if (!session) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
const body = await request.json();
// Validação no servidor, independente do que o frontend enviou
const result = CommentSchema.safeParse(body);
if (!result.success) {
return NextResponse.json(
{ error: result.error.flatten() },
{ status: 400 }
);
}
// Agora sim persiste o dado sanitizado
await saveComment(session.user.id, result.data.comment);
return NextResponse.json({ success: true });
}
O Que Mudei Concretamente no Meu Fluxo
Depois de absorver todos esses dados, não parei de usar IA. Mas mudei o protocolo. São regras simples que agora são inegociáveis para mim:
Nunca cole secrets em chat de IA
Antes de enviar qualquer trecho de código para o Claude ou ChatGPT para debugar, removo manualmente variáveis de ambiente, tokens e chaves. A pergunta que o relatório de 2026 da Tenable levanta é direta: o que acontece com o histórico do prompt? Quem tem acesso? Por quanto tempo fica armazenado? Não vale o risco.
Prompts explícitos de segurança produzem código melhor
Em vez de “crie um formulário de login”, uso:
Crie um componente de login em React com TypeScript para Next.js 15 App Router.
Requisitos de segurança obrigatórios:
- Validação deve ocorrer no servidor (Server Action ou API Route), não só no cliente
- Não armazene a senha em nenhum estado local após o submit
- Implemente proteção contra brute force (rate limiting no endpoint)
- Retorne mensagens de erro genéricas que não exponham se o e-mail existe ou não
- Use httpOnly cookies para o token de sessão, nunca localStorage
- Siga as recomendações OWASP para autenticação web (2021)
Para cada decisão de segurança que tomar, explique o motivo.
A diferença na qualidade do código gerado com esse prompt versus um prompt genérico é expressiva. A IA é boa em seguir restrições explícitas. O problema é que a maioria dos prompts não as inclui.
Trate código de IA como PR de júnior
Nenhum trecho gerado por IA vai para produção sem passar por pelo menos uma dessas verificações:
# Análise estática: detecta padrões inseguros conhecidos
npx eslint ./src --ext .ts,.tsx \
--rule '{"no-eval": "error", "no-implied-eval": "error"}'
# Auditoria de dependências (rode após toda sugestão de pacote da IA)
npm audit --audit-level=high
# Semgrep: scanner de segurança com regras para Next.js e React
# (gratuito para projetos individuais)
semgrep --config=p/nextjs --config=p/react ./src
# Para verificar headers de segurança em produção
npx is-website-vulnerable https://seusite.com
O Dado que Resume Tudo em 2026
O relatório da ProjectDiscovery, divulgado em 22 de abril de 2026 com dados de 200 profissionais de segurança, chegou a uma conclusão que resume bem o momento: 66% dos times de segurança gastam mais da metade do tempo validando manualmente código gerado por IA, em vez de resolver as vulnerabilidades em si. A velocidade de geração de código acelerou. A capacidade de revisão de segurança não acompanhou.
O CTO da CrowdStrike, Cristian Rodriguez, colocou assim: a pergunta real não é se a IA cometeu um erro. É se as organizações conseguem proteger aplicações na mesma velocidade com que estão construindo.
“O risco real do vibe coding não é a IA escrevendo código inseguro. É humanos fazendo deploy de código que nunca tiveram chance de proteger.” — Trend Micro, março de 2026
Conclusão: Use IA, Mas Seja o Adulto na Sala
Os dados de 2026 são claros: 92% de aplicações auditadas com falhas críticas, 35 CVEs num único mês, 1,5 milhão de tokens expostos num lançamento que viralizou. Esses números não existem para assustar. Existem para informar.
Não pretendo parar de usar Claude, Cursor ou Copilot. A produtividade é real e a adoção já não é reversível. Mas aprendi que a habilidade mais valiosa no desenvolvimento com IA em 2026 não é saber escrever bons prompts. É saber o que revisar, o que questionar e o que nunca delegar sem verificação.
Verifique cada pacote npm antes de instalar. Remova secrets antes de mandar código para qualquer chat de IA. Valide sempre no servidor, independente do que o frontend fizer. Revise autenticação e autorização como se a IA fosse um estagiário bem-intencionado, mas sem experiência com ambientes de produção. Porque na maioria das vezes, é exatamente isso que ela é.
Se quiser discutir algum ponto ou tiver dúvidas sobre como aplicar isso no seu stack, me encontre em pauloreducino.com.br.
Gostou do conteúdo?
Se você precisar de ajuda aplicando essas técnicas no seu projeto, estou disponível para consultoria.
Autor
Paulo Reducino
Desenvolvedor Frontend com 5+ anos de experiência em React, Next.js e TypeScript. Especialista em performance, SEO e acessibilidade. Atualmente na Vizuh (Londres, UK).



