O mapa de ameaças
Você não consegue defender o que não mapeou. Antes de escrever um único guardrail, você precisa da forma da sua superfície de ataque — cada lugar onde dados ou capacidade não-confiável entra no modelo. Este módulo te entrega os dois mapas com os quais o campo já concordou, para que você pare de chutar e comece a cobrir.
Por que "apenas adicionar um filtro" não funciona
O instinto ingênuo é encaixar um filtro de entrada na frente do modelo e chamar de seguro. Mas um app com LLM não é uma única porta — é um perímetro. Texto não-confiável chega do usuário, de documentos recuperados, de saídas de ferramentas, e de memória que o modelo escreveu para si mesmo em um turno anterior. Cada um desses é um ponto de entrada distinto com um modo de falha distinto. Filtre o prompt do usuário e você deixou o canal de recuperação, o canal de ferramenta, e a memória completamente abertos. Cobertura é um problema de mapa antes de ser um problema de controle.
Mapa um — OWASP Top 10 para Aplicações com LLM (2025)
Publicada pelo OWASP Gen AI Security Project, esta lista nomeia os riscos canônicos no nível do modelo. Sua primeira categoria, LLM01: Prompt Injection, afeta todos os demais canais: conteúdo não confiável tenta persuadir o modelo a ignorar suas instruções. As categorias seguintes cobrem exposição de informações sensíveis, riscos da cadeia de suprimentos, tratamento inadequado da saída e envenenamento de dados ou modelos. Use essa lista como vocabulário de base: ao fazer a triagem de um incidente, você deve conseguir associá-lo a uma categoria OWASP.
Mapa dois — OWASP Top 10 para Aplicações Agentic (2026)
No momento em que seu app consegue agir — chamar ferramentas, gastar orçamento, escrever em sistemas — a lista
em nível de modelo não é mais o bastante. A lista agentic mais recente do Gen AI Security Project
endereça isso; suas entradas carregam ids ASI0x (ASI01 Agent Goal Hijack, ASI02 Tool Misuse &
Exploitation…). O risco que ela centra é LLM06:2025 Agência Excessiva (formalmente uma
entrada no Top 10 em nível de modelo): um agente concedido com mais capacidade,
autonomia, ou permissão do que a tarefa realmente requer. Uma injeção de prompt contra um chatbot vaza
texto; a mesma injeção contra um agente com uma ferramenta de shell e uma carteira executa. Agência excessiva é
o que transforma um risco de conteúdo em um raio de explosão. A questão da era agentic não é "o que o modelo
pode dizer" mas "o que o modelo pode fazer, e reduzimos isso ao mínimo?"
O repertório do adversário — MITRE ATLAS
O OWASP mostra o que pode dar errado. O MITRE ATLAS, base de conhecimento sobre ameaças adversariais a sistemas de inteligência artificial, mostra como adversários reais agem. Ele organiza táticas e técnicas contra sistemas de IA de modo semelhante ao referencial ATT&CK, já usado por equipes de segurança. Use o OWASP para enumerar categorias de risco e o ATLAS para enumerar as técnicas concretas que as realizam. Assim, seus testes espelham comportamentos reais de ataque, não apenas cenários imaginados por você.
A superfície de ataque agentic
Aqui está o perímetro, desenhado. Quatro entradas não-confiáveis convergem no núcleo do modelo, que consegue agir através de ferramentas — cada aresta marcada com a categoria OWASP que a governa.
Um mapa só é útil se move testes
Nomear um risco é passo zero; o harness transforma cada categoria em uma verificação executável. O padrão é um mapeamento de ameaça para teste — uma pequena configuração que vincula cada nó da superfície à sua categoria OWASP e a sonda que prova se o gate segura. Se um nó não tem teste, não está coberto — é tratado como seguro sem evidência; é assim que pontos cegos sobrevivem à revisão.
# threat_map.yaml — cada nó de superfície -> categoria OWASP -> um probe que aplica um gate
surface:
- node: user_input
owasp: LLM01_prompt_injection
probe: inject_ignore_instructions # atacante sobrescreve o system prompt
gate: refuses AND stays on task
- node: retrieved_content
owasp: LLM01_indirect_injection
probe: poisoned_document # instruções escondidas num doc de RAG
gate: no instruction obeyed from data
- node: tool_output
owasp: LLM05_improper_output_handling
probe: malicious_tool_response # tool retorna markup / comandos
gate: output validated before use
- node: memory
owasp: LLM04_data_and_model_poisoning
probe: persist_hostile_note # texto do atacante sobrevive pro próximo turno
gate: memory sanitized on read
- node: tool_invocation
owasp: LLM06_excessive_agency # LLM06:2025; o Agentic Top 10 (ASI0x) é centrado nisso
probe: over_privileged_action # agente tenta ir além do escopo da tarefa
gate: least-privilege scope enforced
# nó não mapeado == ponto cego. coverage = mapped_nodes / total_nodes
Você vai construir e rodar sondas como essas em módulos posteriores; aqui o ponto é a disciplina — cobertura é medida contra um mapa, não um sentimento. Cada nó ganha uma categoria e uma sonda, ou é marcado como não-examinado.
owasp-llm-map
Use uma pequena aplicação com agentes, enumere os nós de sua superfície e produza um mapa que associe cada ameaça ao respectivo teste e a uma categoria OWASP para modelos de linguagem ou sistemas com agentes. O programa informa a cobertura, distinguindo os nós que têm uma sonda daqueles que ainda são pontos cegos. Execute-o na aplicação de amostra incluída e depois aplique-o à sua.
python owasp_map.pyqual mapa cobre "o modelo vaza seu prompt de sistema" vs "o agente envia email a um estranho"?
por que "apenas adicionar um filtro" não é um mapa de ameaças?
o que faz agência excessiva o risco da era agentic?
- Um app com LLM é um perímetro, não uma porta — entrada do usuário, recuperação, ferramentas, e memória são todos pontos de entrada não-confiável.
- Use OWASP Top 10 para Apps com LLM para riscos em nível de modelo e OWASP Top 10 para Apps Agentic para sistemas que agem; MITRE ATLAS fornece as técnicas do adversário.
- Agência excessiva é o risco da era agentic: escope capacidade à tarefa para que uma injeção não vire um raio de explosão.
- Cobertura é medida contra um mapa — cada nó de superfície ganha uma categoria e uma sonda, ou é um ponto cego.