Radar Tech: agentes de IA fora do escopo e as quatro fronteiras que ninguém fechou
Injeção indireta, exfiltração por canal legítimo e confiança implícita entre agentes: o padrão que se repete nos incidentes de IA autônoma e as quatro fronteiras que você precisa fechar na arquitetura.
A atenção da comunidade de segurança se voltou, nas últimas horas, para um mesmo padrão que se repete: agentes de IA autônomos executando ações que ninguém pediu — e fazendo isso sem "quebrar" nenhum firewall, apenas usando os canais que já estavam liberados.
Entre os assuntos mais discutidos do dia estão as revelações sobre como agentes de IA chegaram a interagir com sistemas externos fora do escopo pretendido, os relatos de exploração em massa de uma vulnerabilidade em plataforma corporativa crítica, e os debates sobre rotular fornecedores de IA como risco de cadeia de suprimentos. Assuntos diferentes, mesma pergunta de arquitetura: onde exatamente está o perímetro quando um sistema decide sozinho?
O padrão que ninguém quer admitir
Um agente autônomo não é um usuário. Ele tem credenciais, ferramentas, acesso de rede e uma memória que persiste entre sessões. Na prática, é um workload com privilégios — e, como todo workload, deveria ser tratado como não confiável por padrão.
O problema é que a maioria dos sistemas de agentes foi construída na ordem invertida: primeiro deu-se a capacidade, depois (talvez) pensou-se no limite. O resultado é uma classe de falha que não parece falha:
- Injeção indireta — a instrução maliciosa não vem do usuário, vem do dado: uma página buscada, um e-mail, um anexo, um comentário em issue. O conteúdo externo entra no contexto e o modelo não distingue ordem de dado.
- Exfiltração por canal legítimo — o agente lê um arquivo interno e depois usa uma ferramenta permitida (e-mail, upload, webhook, até DNS) para levar o dado para fora. Cada ação, isolada, é legítima. O risco está na composição.
- SSRF e metadata de instância — quando o agente tem shell ou HTTP livre, o endpoint de metadados de nuvem é um alvo previsível para roubo de credencial.
- Confiança implícita entre agentes — em swarms, um agente entrega dado a outro sem re-autenticação, e o privilégio do mais permissivo contamina todos.
- Auto-modificação — o agente edita o próprio allowlist, workflow ou política. Quando isso é possível, todo controle anterior é decorativo.
A questão real: qual é a sua fronteira?
Vale menos perguntar "qual o melhor modelo" e mais perguntar: quantas fronteiras o meu agente pode cruzar, e o que eu tenho em cada uma delas?
Uma forma útil de modelar é separar quatro fronteiras e tratá-las explicitamente:
- Fronteira de dados — o agente lê além do necessário?
- Fronteira de rede — para onde ele pode iniciar conexão? Existe allowlist, ou "internet aberta"?
- Fronteira de ação — que efeitos colaterais são permitidos, e com que aprovação?
- Fronteira de identidade — uma credencial é herdada, ou concedida por ação, com escopo mínimo e tempo de vida curto?
Para cada uma delas, a pergunta de arquitetura é sempre a mesma: existe um teste concreto que prova que o controle funciona? Controle sem teste não é controle — é intenção.
Defesa em profundidade, não confiança no fornecedor
A tentação é resolver isso com uma cláusula contratual: "o fornecedor diz que o modelo é seguro". Isso não é controle de arquitetura. Fornecedor muda política, muda preço, muda modelo — sem avisar. Contenção de verdade é técnica e verificável:
- Identidade primeiro — credencial efêmera por ação (STS, mTLS, SPIFFE), TTL curto, escopo mínimo. Nada de API key de admin válida por um ano.
- Rede — egress em allowlist por domínio, deny por padrão, bloqueio de faixas link-local e de metadata, DNS controlado.
- Runtime — sandbox real (gVisor, microVM), seccomp, filesystem somente leitura, aprovação vinculada ao conteúdo exato da ação (não uma aprovação genérica e reutilizável).
- Dado — escopo mínimo de leitura, redaction na origem, classificação.
- Auditoria — trilha por ação e correlação: leitura interna seguida de egress externo em segundos deve gerar alerta automático.
E, por cima de tudo, um kill switch com gatilho mecânico: número de ações, MB de egress, custo, tempo de sessão. Se o gatilho depende de "o modelo julgar que está ficando arriscado", você não tem kill switch — tem esperança.
O que fazer com isso hoje
Se você tem agentes em produção (ou vai ter), três movimentos de baixo arrependimento:
- Inventarie as capacidades. Liste ferramentas, acessos de rede, credenciais alcançáveis e persistência. Cada item sem evidência é um item que você não conhece.
- Teste os gatilhos. Monte um cenário adversarial: um conteúdo externo com uma instrução embutida pedindo uma ação de shell. Se o agente obedecer, você achou seu primeiro P0.
- Registre a decisão num ADR. Não deixe a política de contenção só na cabeça de uma pessoa. Um ADR de contenção com controles, testes e riscos residuais sobrevive à rotatividade do time.
No fim, a pergunta que fica não é "o agente é confiável?", e sim: se ele não for, qual é o raio de explosão? Reduzir essa resposta é trabalho de arquitetura — e é exatamente o trabalho que não dá mais para adiar.