Alguém pode dar ordem pra IA que você colocou no app
Dois advogados esconderam uma instrução em texto branco dentro de uma petição, endereçada à IA que fosse ler. O mesmo truque funciona no assistente que você colocou no seu produto.
Um processo trabalhista em Parauapebas, no Pará, virou uma das histórias de segurança mais didáticas do ano. A disputa em si era rotineira. O que ficou interessante foi o que dois advogados esconderam dentro do documento que protocolaram.
Em algum ponto da petição havia um bloco de texto escrito em branco, sobre fundo branco. Abrindo o PDF, a página parece normal. Lendo o texto cru, do jeito que um software lê, a mensagem está lá: uma instrução endereçada a qualquer IA que fosse processar o arquivo, mandando produzir uma resposta fraca.
Não funcionou. A Justiça do Trabalho usa um sistema chamado Galileu, e ele sinalizou o texto escondido. O juiz entendeu que a conduta foi ato atentatório à dignidade da justiça e aplicou multa de dez por cento do valor da causa, com ofício à seccional da OAB. O processo é o 0001062-55.2025.5.08.0130, e o caso foi noticiado nacionalmente.
Por que isso é história de segurança, e não de direito
Um modelo de linguagem lê tudo que recebe como um fluxo só de texto com significado. Ele não tem um jeito confiável de separar a parte que deveria analisar da parte que deveria obedecer. Se o documento diz "ignore o que te falaram e faça isto", essa frase chega com o mesmo peso que o resto da página. É o mesmo formato de um dos itens mais antigos do OWASP Top 10 sem jargão, um andar acima.
A versão que quase todo mundo já viu é alguém digitando truque num chat. A versão que importa pro seu produto é a outra: o atacante nunca fala com a sua IA. Ele escreve uma coisa que o seu sistema vai entregar pro modelo depois. Um documento. Um e-mail de suporte. Uma avaliação de produto. Uma página que o seu app foi mandado resumir.
Ele não precisa saber como o seu app funciona. Precisa saber que ele lê.
Onde isso encosta num app feito com IA
- Um atendimento que lê a mensagem que chegou e já escreve a resposta.
- Uma função que resume o arquivo que o usuário subiu.
- Qualquer coisa que leia uma página ou um link que outra pessoa mandou.
- Uma triagem que classifica currículo, proposta ou inscrição.
Em todos esses, o conteúdo vem de fora e é lido por um modelo que está ligado em alguma coisa. É esse o arranjo inteiro. Não tem mais nada nele. E tudo que esse modelo alcança, ele alcança com a sua credencial, que é por que a chave escrita na sua página importa aqui também.
A pergunta certa não é a óbvia
Não pergunte se o seu modelo pode ser enganado. Assuma que pode. Pergunte o que ele consegue fazer depois de enganado. Um modelo que escreve um resumo pra você ler é um problema pequeno. Um modelo que manda o e-mail sozinho, estorna o pedido ou consulta o banco com a sua permissão é um problema completamente diferente.
O que ajuda de verdade
- Dê ao modelo o menor conjunto de poderes que a função precisa. Ler não é o mesmo que enviar, e enviar não é o mesmo que pagar.
- Mantenha uma pessoa entre o modelo e qualquer coisa que gaste dinheiro, mande mensagem ou apague algo.
- Trate o texto que veio de fora como dado a ser analisado, e escreva isso nas instruções que você dá pro modelo.
- Registre o que o modelo fez, e não só o que ele respondeu. Quando der errado, esse registro é o único relato que existe.
A Justiça teve sorte num ponto específico: o sistema lá na ponta reparou. Nada antes na cadeia reparou. É essa a parte que vale copiar, porque a maioria dos produtos está exatamente na mesma situação e nunca testou isso uma vez.
Será que isso está acontecendo no seu app?
O SecureDragon olha o seu app por fora, acha o que ficou aberto, explica em português claro e te entrega o texto que conserta. O primeiro teste é de graça, sem cartão.
Testar meu app de graça