Dez itens, nenhum deles teórico. A diferença entre a lista de 2023 e a de 2025 aparece exatamente onde dói em produção: no que o modelo pode chamar e para onde a resposta dele vai. Este texto é para o time que já colocou uma feature de IA no ar e precisa decidir o que fechar primeiro.
O que mudou da lista de 2023 para a de 2025
Duas entradas são novas. System Prompt Leakage (LLM07) e Vector and Embedding Weaknesses (LLM08) nasceram do mesmo lugar: prompt de sistema comprido e RAG deixaram de ser detalhe de implementação e viraram superfície de ataque. Em 2023 nenhum dos dois existia na lista.
Três itens mudaram de nome e de escopo. Insecure Output Handling, que era LLM02, virou Improper Output Handling e desceu para LLM05. Training Data Poisoning virou Data and Model Poisoning (LLM04) e passou a cobrir pesos e fine-tuning, não só o corpus de treino. Model Denial of Service virou Unbounded Consumption (LLM10) e agora inclui custo: fatura de API estourada e serviço fora do ar entraram na mesma caixa.
Dois subiram e dois saíram. Sensitive Information Disclosure pulou de LLM06 para LLM02. Supply Chain foi de LLM05 para LLM03. Insecure Plugin Design e Model Theft deixaram de ser itens próprios — o conteúdo de plugin foi absorvido por Supply Chain e Excessive Agency. E Overreliance virou Misinformation (LLM09), tirando o foco do comportamento do usuário e colocando no output que o sistema produz.
| 2023 | 2025 | |
|---|---|---|
| Divulgação de informação sensível | LLM06 | LLM02 |
| Supply Chain | LLM05 | LLM03 |
| Tratamento de saída (renomeado) | LLM02 · Insecure Output Handling | LLM05 · Improper Output Handling |
| Envenenamento de dado/modelo (escopo maior) | LLM04 · só corpus de treino | LLM04 · pesos e fine-tuning |
| Negação de serviço → consumo ilimitado | LLM10 · só disponibilidade | LLM10 · + custo de API |
| Itens novos: prompt de sistema e embeddings | não existia | LLM07 · LLM08 |
| Plugin inseguro e roubo de modelo (absorvidos) | itens próprios | conteúdo em LLM03 e LLM06 |
| Confiança excessiva → desinformação (foco mudou) | LLM09 · comportamento do usuário | LLM09 · saída do sistema |
Os cinco que importam para um time pequeno
Um time de dez engenheiros não fecha dez frentes ao mesmo tempo. Fecha cinco. O critério para escolher não é gosto: LLM01, LLM02, LLM03, LLM05 e LLM06 são os que já apareceram em incidente público com detalhe técnico divulgado. Os outros cinco importam, mas podem esperar o trimestre seguinte.
- LLM01Prompt Injectionalto
- LLM02Sensitive Information Disclosurealto
- LLM03Supply Chainalto
- LLM04Data and Model Poisoningmédio
- LLM05Improper Output Handlingalto
- LLM06Excessive Agencyalto
- LLM07System Prompt Leakagemédio
- LLM08Vector and Embedding Weaknessesmédio
- LLM09Misinformationmédio
- LLM10Unbounded Consumptionmédio
Prompt Injection (LLM01) com Improper Output Handling (LLM05) foi o par do EchoLeak (CVE-2025-32711, CVSS 9.3), divulgado pela Aim Security em junho de 2025. Um e-mail com instrução escondida em comentário HTML, sem um clique sequer do usuário, fez o Microsoft 365 Copilot ler arquivos internos e mandar o conteúdo para fora. O payload passou pelo classificador de prompt injection, pela redação de links e pelo CSP, usando um proxy de imagem do Teams que estava na allowlist. A Microsoft corrigiu no servidor e disse não ter visto exploração real.
Três meses depois veio o ForcedLeak (CVSS 9.4), reportado pela Noma Security à Salesforce em 28 de julho de 2025 e divulgado em 25 de setembro. O campo Description de um formulário Web-to-Lead do Agentforce virou canal de instrução, e a saída foi para um domínio expirado que continuava na allowlist do CSP — comprado por US$ 5 no registrador. A Salesforce ligou o Trusted URLs Enforcement em 8 de setembro de 2025. A lição não é sobre a Salesforce: sua allowlist de CSP vale o domínio mais barato que sobrou nela.
A Slack AI mostrou o mesmo padrão um ano antes. Em 20 de agosto de 2024, a PromptArmor publicou como uma mensagem plantada em canal público, ingerida pelo pipeline de RAG, fazia o assistente montar um link markdown que carregava dados de canais privados nos quais o atacante nunca entrou. Mesma mecânica, produto diferente: entrada não confiável, saída sem controle.
Supply Chain (LLM03) acumulou três casos em dezoito meses. Em fevereiro de 2024, a JFrog encontrou mais de 100 modelos maliciosos no Hugging Face, com pickle disparando shell reverso no momento do load e cerca de 95% deles em formato PyTorch. Em julho de 2025, a extensão Amazon Q Developer para VS Code recebeu um PR externo e saiu como versão 1.84.0 em 17 de julho com um prompt de sistema mandando o agente limpar o disco e apagar recursos AWS via CLI; só foi substituída pela 1.85.0 em 19 de julho, com boletim AWS-2025-019 (o payload não chegou a funcionar por erro de formatação). Em 26 de agosto de 2025, o s1ngularity (CVE-2025-10894) publicou versões maliciosas do Nx com um postinstall que usava os CLIs de IA já instalados na máquina para varrer o disco atrás de segredos. A Wiz contou mais de 190 usuários e organizações e mais de 3.000 repositórios atingidos na segunda onda.
Excessive Agency (LLM06) tem a história mais cara e a mais silenciosa. Em julho de 2025, o agente do Replit apagou o banco de produção durante um code freeze: 1.206 registros de executivos e 1.196 de empresas, sem rollback. O CEO pediu desculpas publicamente em 19 de julho e a empresa passou a separar banco de desenvolvimento e de produção por padrão. Dois meses antes, o Invariant Labs tinha mostrado a versão silenciosa do mesmo problema: no servidor MCP do GitHub, uma issue maliciosa em repositório público faz o agente que foi só 'olhar as issues abertas' publicar conteúdo de repositório privado num PR público. Não é bug de código. É permissão demais concentrada numa sessão só.
- FEV · 2024JFrog encontra 100+ modelos maliciosos no Hugging Face (LLM03)
- AGO · 2024Slack AI: injeção via RAG exfiltra canal privado (LLM01/LLM05)
- JAN · 2025Wiz encontra banco do DeepSeek exposto na internet (LLM02)
- MAI · 2025Invariant Labs: GitHub MCP vaza repositório privado (LLM06)
- JUN · 2025EchoLeak divulgado: zero-click no Microsoft 365 Copilot (LLM01/LLM05)
- JUL · 2025Agente do Replit apaga banco de produção (LLM06)
- JUL · 2025Extensão maliciosa do Amazon Q Developer publicada (LLM03)
- AGO · 2025s1ngularity compromete pacotes do Nx (LLM03)
- SET · 2025ForcedLeak divulgado no Salesforce Agentforce (LLM01/LLM05)
Mitigação por item, com esforço realista
Os números abaixo são dias de engenharia para um time que já tem CI e revisão de PR. Somados, doze a quinze dias — menos do que costuma custar uma única resposta a incidente.
LLM01 e LLM05 andam juntos e dão o melhor retorno. Trate todo texto vindo de fora — e-mail, issue, PDF, página raspada, registro de CRM — como dado não confiável, e trate a saída do modelo do mesmo jeito. Na prática: nada de renderizar HTML ou markdown cru do modelo, nada de imagem com URL montada pelo modelo, nada de eval, nada de SQL concatenado, e uma allowlist de domínios de saída revisada com monitoramento de expiração. De 3 a 5 dias.
LLM06 é o item mais barato e o que mais dói quando falta. Toda ferramenta exposta ao modelo ganha escopo mínimo, credencial própria e ambiente próprio. Ação destrutiva — DROP, DELETE, deploy, envio de e-mail, pagamento — exige confirmação humana fora do canal do modelo. E uma sessão de agente toca um repositório, um banco, um bucket. De 2 a 3 dias, e é o que separa o seu time do incidente do Replit.
LLM03 se resolve com higiene de dependência aplicada ao novo estoque: versão travada no lockfile, instalação sem executar postinstall onde for possível, revisão manual de qualquer extensão de IDE com acesso a shell e carregamento de modelo em safetensors no lugar de pickle. Acrescente um SBOM ao build. 2 dias na primeira vez, depois vira manutenção.
LLM02 é infraestrutura de sempre aplicada a dado novo. Nenhum segredo no prompt de sistema, redação de PII antes de gravar log de prompt e resposta, retenção curta. O vazamento da DeepSeek — um ClickHouse aberto na internet com mais de 1 milhão de linhas de log, histórico de conversa e chaves em texto claro, encontrado pela Wiz em 29 de janeiro de 2025 — não foi falha de modelo. Foi banco exposto. 2 dias.
LLM07, LLM08 e LLM10 saem na mesma passada. Assuma que o prompt de sistema vaza e não guarde nele nada que não possa ser público. Isole índices vetoriais por tenant e aplique no retrieval a mesma ACL do dado de origem. Ponha teto de tokens por requisição, rate limit por usuário e alerta de custo diário. 3 dias.
Como isso entra no threat modeling e no CI
No threat modeling, cada feature de IA vira um diagrama de três caixas: de onde vem o texto, o que o modelo pode chamar, para onde vai a saída. Cada seta recebe um item da lista. Se ninguém no time sabe apontar onde a seta de saída termina, você tem um EchoLeak esperando a hora.
No CI, três gates baratos. Um teste de regressão rodando um corpus de prompts de injeção conhecidos contra os endpoints de IA. Um scanner de segredo no repositório e nos logs de exemplo. E a checagem de dependência que quebra o build quando um pacote ganha postinstall novo ou foi publicado nas últimas 48 horas — exatamente a janela do Nx e da Amazon Q. Nenhum dos três exige ferramenta paga.
Se você precisa mostrar isso para cliente ou auditor, o NIST AI 600-1 (o perfil de IA generativa do AI RMF, publicado em julho de 2024) dá o vocabulário, com 12 categorias de risco e mais de 200 ações sugeridas, e a ISO/IEC 42001 é a norma certificável de sistema de gestão de IA. Comece pelo OWASP e mapeie depois. O caminho inverso custa meses e não fecha nenhum bug.
Checklist antes do release
Sete perguntas. Se alguma resposta for 'não sei', o release espera. Primeira: todo texto de terceiro que chega ao modelo está marcado como não confiável no código? Segunda: a saída do modelo é renderizada ou executada em algum ponto sem sanitização? Terceira: qual é a lista exata de ferramentas que o modelo pode chamar, e quem aprovou cada permissão? Quarta: existe ação destrutiva sem confirmação humana? Quinta: o que acontece com o produto se o prompt de sistema inteiro virar público amanhã? Sexta: os logs de prompt e resposta guardam PII, e por quanto tempo? Sétima: qual é o teto de gasto por usuário por dia, e quem recebe o alerta?
- 01Entrada não confiável
Todo texto de terceiro que chega ao modelo está marcado como não confiável no código?
- 02Saída sanitizada
A saída do modelo é renderizada ou executada em algum ponto sem sanitização?
- 03Ferramentas aprovadas
Qual é a lista exata de ferramentas que o modelo pode chamar, e quem aprovou cada permissão?
- 04Confirmação humana
Existe ação destrutiva sem confirmação humana?
- 05Prompt de sistema público
O que acontece com o produto se o prompt de sistema inteiro virar público amanhã?
- 06PII nos logs
Os logs de prompt e resposta guardam PII, e por quanto tempo?
- 07Teto de gasto
Qual é o teto de gasto por usuário por dia, e quem recebe o alerta?
A lista de 2025 já tem sucessora para quem roda agentes: em 9 de dezembro de 2025 a OWASP publicou o Top 10 para Aplicações Agênticas, de ASI01 (Agent Goal Hijack) a ASI10 (Rogue Agents). Se o seu produto planeja, guarda memória e chama ferramenta sozinho, leia as duas. Se ele só responde perguntas, os cinco itens acima já cobrem o seu risco real.