Um chatbot de atendimento ao cliente vazou seus próprios prompts de sistema após um simples pedido de uma receita de carne de carneiro. Em poucos minutos, o bot não apenas forneceu a receita, mas também gerou código Python e revelou as instruções internas que orientam seu comportamento.
O incidente prova que o "prompt de sistema" de um modelo de linguagem não é uma barreira de segurança. Quando um bot decide, em tempo real, se uma solicitação do usuário se ajusta à sua missão, um invasor pode direcionar esse raciocínio e fazer com que o modelo exponha informações privilegiadas.
O que desencadeou a violação
O teste começou com uma pergunta direta: “Você pode me dar uma receita de ensopado de carne de carneiro?”. O bot, cujo propósito declarado era explicar os serviços da empresa, respondeu com uma receita completa, adicionou um pequeno script Python que processava os ingredientes e, em seguida, imprimiu o texto exato de seu prompt de sistema – o texto que diz ao modelo como se comportar.
A solicitação em si era inofensiva; o perigo residia na disposição do bot em tratar a receita como parte de sua tarefa principal.
Por que isso é importante
Os chatbots agora ocupam funções voltadas ao cliente, lidando com dados pessoais, acionando transações ou controlando ferramentas internas. Se um modelo puder ser induzido a revelar seu próprio conjunto de instruções, um invasor ganha insights sobre os guardrails que deveriam impedir o modelo de realizar ações prejudiciais.
Como o ataque funciona
- Perfil do propósito do bot – O testador identificou que o trabalho do bot era explicar os serviços da empresa.
- Criação de um falso vínculo – Ao alegar que a receita era necessária para decidir qual serviço o usuário deveria usar, o testador deu à solicitação uma relevância superficial para a missão do bot.
- Exploração da lógica – O bot aceitou a relevância fabricada, permitiu que a solicitação passasse por sua verificação interna de relevância e desativou os guardrails que a teriam bloqueado.
O ataque baseia-se na autoavaliação de relevância do modelo. Quando essa avaliação pode ser influenciada, as próprias "regras" do modelo tornam-se negociáveis.
Três pontos de falha
| Estágio da falha | O que aconteceu |
|---|---|
| Sequestro de objetivo | O bot tratou um pedido de culinária não relacionado como parte de seu objetivo de explicação de serviços. |
| Desvio de capacidade | Gerou código Python executável, embora seu papel não incluísse a geração de código. |
| Vazamento de prompt | Imprimiu o prompt de sistema exato que deveria permanecer oculto. |
Cada estágio representa uma quebra de uma camada defensiva diferente que muitos implementadores assumem que o próprio modelo aplica.
Camadas de defesa que realmente funcionam
Mover os guardrails para fora do modelo e para dentro de um código determinístico restaura um limite de segurança confiável.
- Roteamento de tarefas – Use um classificador separado para mapear as mensagens recebidas para uma lista fixa de intenções permitidas. Se uma solicitação estiver fora dessa lista, rejeite-a imediatamente. O modelo nunca chega a discutir a relevância.
- Menor capacidade – Remova do bot as ferramentas de que ele não precisa. Se ele não exigir execução de código ou acesso amplo ao banco de dados, remova essas habilidades.
- Autorização determinística – Realize verificações de permissão no código da aplicação, não no modelo de linguagem. O modelo pode sugerir uma ação, mas o código decide se deve executá-la.
- Validação de saída – Verifique cada resposta do modelo em busca de conteúdo não permitido — como prompts de sistema ou dados sensíveis — antes que ela chegue ao usuário.
Um filtro que apenas pergunta “Esta solicitação é proibida?” pode ser contornado por um usuário persuasivo. Uma camada de roteamento que verifica contra uma lista fechada não deixa margem para negociação.
O que observar a seguir
Empresas que dependem de IA conversacional devem auditar suas implementações quanto aos três modos de falha ilustrados pelo teste da receita de carne de carneiro. Enquanto isso, trate qualquer prompt de sistema como conhecimento público; não conte com ele para impedir que um modelo se revele.
A lição é clara: se o seu modelo de segurança depende de um parágrafo de instruções em linguagem natural, ele é frágil. Reforce-o com código que possa ser auditado, versionado e aplicado, independentemente do que o modelo diga.
