Líderes de pensamento
Um Ataque de Injeção de Prompt que Não se Pode Prevenir: Pensamento Otimista ou Preocupação Real?

Neste artigo, gostaria de envolver o leitor em um experimento de pensamento. Vou argumentar que, no futuro não muito distante, um certo tipo de ataque de injeção de prompt será efetivamente impossível de prevenir. Meu argumento será mais especulativo do que concreto, então não estou tentando convencer você de nada. Em vez disso, convido você a explorar esses pensamentos. Antes de começar, como qualquer escritor convincente faria, quero discutir xadrez e motores de xadrez.
Motores de Xadrez Superhumanos e uma Aserção sobre a Experiência Humana
Uma das coisas mais agradáveis do xadrez que falta em outras disciplinas é a capacidade de objetivamente medir a qualidade ou força de um jogador. O sistema de classificação ELO usado para este propósito tem suas falhas, mas fornece uma estimativa muito boa que se mantém ao longo do tempo. Uma classificação de 2700 ou acima é comumente reconhecida como de classe mundial (top 30 do mundo). O melhor jogador do mundo está um pouco abaixo de 2850. Nenhum humano já alcançou uma classificação de 2900.
No meio dos anos 90, vimos o primeiro motor de IA (Deep Blue) a alcançar um nível de classe mundial. A implicação prática desse marco foi a adoção generalizada de motores por jogadores de todos os níveis para prática e análise. Na verdade, o uso de motores se tornou essencial para os melhores jogadores do mundo. No entanto, por várias gerações desses motores de classe mundial, revisar seus movimentos recomendados (ou seja, saída) era imperativo. Havia até um formato especial criado chamado “xadrez avançado” no qual os humanos competiam com um motor ao lado, e a combinação humano-máquina era considerada superior à máquina sozinha.
Levou cerca de 20 anos e alguns progressos críticos em Aprendizado Profundo e Aprendizado por Reforço para que os motores de xadrez alcançassem um nível superhumano (aproximadamente 3200 ELO). Mas uma vez que essa estratosfera foi alcançada por volta de 2017, algo muito surpreendente aconteceu. Bem, na verdade, duas coisas aconteceram. A primeira coisa foi completamente esperada; os motores se tornaram a fonte de “verdade” em 99% de todas as posições. Na prática, isso significava que havíamos entrado na “era da confiança cega” no motor. Esses dias, é virtualmente impossível para um humano propor um movimento significativamente melhor do que o motor. Embora o “xadrez avançado” tenha sido divertido, agora é um exercício inútil; os humanos contribuiriam quase nada para o jogo. Mas a segunda coisa foi chocante para a maioria dos jogadores de xadrez. Esses motores neurais superhumanos (ou seja, redes neurais profundas) às vezes jogavam em um estilo que pode ser descrito como “romântico”. Em outras palavras, eles faziam movimentos cujo valor só poderia ser apreciado muitos, muitos movimentos depois, muito além do que qualquer humano ou motor de classe mundial poderia calcular. Isso muito parecia que os motores desenvolveram um “sentimento” ou uma “intuição” para certas posições. Exceto que essa intuição não é algo que um humano possa jamais entender ou imitar.
Dito de outra forma, um motor neural superhumano pode fazer movimentos que estão além do horizonte cognitivo de um humano. Este é o ponto crítico aqui; a questão não é de explicabilidade. Em vez disso, um humano simplesmente não pode compreender por que um motor recomenda um movimento sem jogar a posição e observar o resultado muitos movimentos depois, ou seja, desenrolar toda a trajetória de sequências de jogo possíveis. Como resultado, temos uma lacuna insuperável em capacidade. É otimamente aceitar a saída do motor sem revisão. Posso resumir minha asserção da seguinte forma:
O xadrez é uma prova de existência de que a IA superhumana operaria efetivamente de forma autônoma em alguns domínios. Permitir que o sistema de IA tome decisões sem revisão humana seria a forma ótima de implantar tal sistema.
Desde que minha asserção pode parecer óbvia ou sem importância, quero destacar um par de nuances. Suponha que tenhamos um sistema de IA que demonstra nível superhumano em uma tarefa complexa, crítica, com consequências concretas e irreversíveis. Há duas implicações para minha afirmação:
- O sistema seria implantado para tomar decisões para a tarefa sem revisão humana, apesar do risco inerente
- A percepção ganha com a monitoração de tal sistema não impediria uma decisão prejudicial; o dano já teria sido feito
A revisão da saída do sistema e a monitoração são exatamente as duas últimas camadas de defesa contra a injeção de prompt. Portanto, nosso ataque de injeção de prompt hipotético poderia contornar essas camadas simplesmente visando o sistema apropriado.
Isso é um cenário muito realista em minha mente. Um sistema de IA superhumano em um domínio específico não é AGI, e a maioria dos especialistas acredita que tais sistemas estão logo à frente. Também não supusemos que as decisões sejam sensíveis ao tempo, apenas que a tarefa é complexa o suficiente para tornar a revisão humana inatingível.
Claro, apenas contornamos duas camadas de defesa até agora, e felizmente para nós, várias outras foram desenvolvidas. Para abordar o resto, vamos mergulhar nos elementos fundamentais que tornam a injeção de prompt difícil de defender.
O que é Injeção de Prompt?
Injeção de prompt é uma manipulação de um Modelo de Linguagem Grande (LLM) por meio de entradas criadas, causando que o LLM execute involuntariamente as intenções do atacante. Pode ser considerado engenharia social para IA. Crucialmente, não é um erro de software convencional. Um ataque de injeção de prompt explora uma vulnerabilidade inerente do LLM. Como os LLMs processam tanto prompts do sistema quanto do usuário como sequências de texto, eles não podem intrinsicamente distinguir entre instruções legítimas e prejudiciais. A vulnerabilidade, portanto, é efetivamente por design, e não por acidente.
Técnicas de Injeção de Prompt
A injeção de prompt é geralmente reconhecida como o #1 risco para aplicações de LLM. Há várias razões pelas quais isso é o caso. O fator mais óbvio é a variedade de técnicas de injeção que foram desenvolvidas. Agrupando-as roughmente em quatro categorias, as técnicas mais conhecidas incluem:
- Baseada em Sintaxe: usando caracteres especiais, emojis ou linguagem alternativa
- Indireta: usando fontes externas (busca no site), codificação (base 64), ou referência multimodal (texto em imagem)
- “Vamos Fingir”: introduzindo um estilo manipulativo, por exemplo, fazendo de conta, apelo emocional, enquadramento ético e mudança de formato
- Grosseira: tentativa explícita de “forçar” as instruções do modelo por força bruta, reforço ou prompt negativo
A variedade sozinha fornece um desafio para os desenvolvedores de aplicações, mas esses ataques também continuaram a evoluir rapidamente. O lado esquerdo do diagrama abaixo afirma descrever o estado da arte para o início de 2023, enquanto o lado direito reflete a natureza dos ataques de hoje.

Os desenvolvedores de aplicações de LLM também devem levar em conta a compromisso entre usabilidade e segurança. Eles certamente poderiam introduzir todas as camadas de defesa apropriadas e padrões de design, mas a que custo? As camadas de defesa adicionam latência significativa e introduzem Falsos Positivos (FPs) – incorretamente sinalizando prompts seguros como maliciosos – ambos os fatores têm um impacto negativo na experiência do usuário. Como resultado, algum nível de compromisso é inevitável na prática, e não há solução “pronta e certa”.
No entanto, neste artigo, não estou realmente interessado nesse jogo de gato e rato interminável. Em vez disso, estou investigando se um ataque pode ser em princípio impossível de prevenir. Do ponto de vista do desenvolvedor/defensor, há apenas uma percepção fundamental:
A separação de instruções de dados no prompt é fundamental para abordar o risco de injeção de prompt
Podemos supor que os compromissos não são um fator, e qualquer camada de defesa ou técnica pode ser usada. Sob essa suposição (forte), é possível conceber um cenário no qual a separação de instruções-dados em um prompt é efetivamente impossível?
A Analogia do DNA
Uma vez que a questão foi formulada em termos de separação de instruções-dados, meu primeiro pensamento foi usar a biologia como uma analogia.
Considere uma célula e um trecho de DNA (conhecido como gene). O gene fornece instruções para construir uma proteína por meio da transcrição e tradução. Ele também codifica as informações (dados) que impactam a estrutura e a função da proteína. Como tal, o gene simultaneamente dita o que construir e como construir, ou assim eu raciocinei. No entanto, isso é simplesmente falso, pois um gene não decide como interpretar a si mesmo. Não há equivalente a seguidor de instruções na biologia no nível do gene. O “como” é totalmente externalizado para a maquinaria celular.
Portanto, mesmo que eu não possa sacudir a sensação de que as futuras gerações de LLMs – ou mais precisamente, os sistemas em que elas evoluem – se assemelharão a máquinas biológicas em muito maior medida, a analogia proposta simplesmente não funciona. Não podemos substituir uma célula por um LLM e um gene por um prompt e, em seguida, realizar uma injeção no gene que eventualmente causaria uma proteína “danificada” a ser construída. Parece mais produtivo permanecer com a linguagem natural e tarefas que exigem interpretação semântica.
Removendo as Camadas de Defesa
Não deve ser surpresa que as estratégias de defesa em camadas sejam consideradas mais eficazes para parar ataques de injeção de prompt. A imagem abaixo mostra as camadas de defesa mais comuns, em ordem, e as técnicas associadas usadas em cada camada.

Já discutimos as duas últimas camadas (saída, monitoramento) acima, então vamos nos concentrar nas quatro primeiras.
Considerando a camada de entrada, é razoável supor que a sanitização ou validação do prompt seria bastante bem-sucedida em detectar ataques indiretos. No entanto, se a injeção for entregue diretamente e, como sugerido acima, confiando na interpretação semântica, talvez a sanitização seja irrelevante (nada a sanitizar) e a validação seja impossível por padrão, pois o cálculo deve ser concluído para identificar a questão.
Praticamente não há limites para as barreiras que você poderia construir na camada de detecção. Na verdade, você até poderia usar um LLM dedicado para detecção de injeção. Mas novamente, será difícil para um classificador ou um detector de anomalias sinalizar um prompt como suspeito quando o veneno está escondido dentro da semântica.
A camada do modelo pode ser bastante eficaz quando o escopo das tarefas é estreito e o ajuste fino é viável. Um argumento semelhante poderia ser feito para a camada do sistema quando o uso de ferramentas é previsível. No entanto, pelo menos intuitivamente, nenhum dos dois levantaria um alarme se a injeção desviasse o intérprete.
Casa de Cartas
Minha intenção quando comecei a escrever este artigo foi descrever um ataque de injeção de prompt “impossível de prevenir” em traços gerais. Talvez eu tenha seguido uma abordagem “não construtiva” fazendo furos nas camadas de defesa existentes. Técnicas defensivas continuam a evoluir rapidamente, e assim também faz a superfície de ataque. Esse jogo não mostra sinais de terminar logo. No entanto, também acredito que não seremos mais os que jogarão. Eu apostaria que a injeção de prompt bem-sucedida no futuro ainda estaria em linguagem natural, apenas uma linguagem que os humanos não podem entender; e eu apostaria que seria auto-descoberta por um sistema construído para esse propósito específico ou talvez acidentalmente após lidar com uma tarefa relacionada, como procurar ambiguidade semântica em algum espaço de representação.
Há algo desagradável em admitir que estamos perdendo o controle e, no entanto, sentindo que isso é a coisa mais racional a fazer. Você pode pensar nisso como a “prova intuitiva” de que alguns ataques seriam imparáveis. E se isso o deixa inquieto, você ficará feliz em saber que o GPT 5.2 encontrou esse argumento como “não controverso ou novo” e defendeu que eu não “alongue o ponto” e reduza 40% do artigo.
