Entre em contato

Um ataque por injeção imediata que não se pode prevenir: ilusão ou preocupação real?

Líderes de pensamento

Um ataque por injeção imediata que não se pode prevenir: ilusão ou preocupação real?

mm
Uma renderização digital em 3D de uma sala de servidores escura com um monitor de computador exibindo uma

Neste artigo, gostaria de propor ao leitor um experimento mental. Argumentarei que, num futuro não muito distante, um certo tipo de ataque de injeção de prompts será praticamente inevitável. Meu argumento será mais especulativo do que concreto, portanto, não pretendo convencê-lo de nada. Em vez disso, convido-o a explorar essas ideias. Antes de começar, como qualquer bom escritor faria, gostaria de discutir xadrez e motores de xadrez.

Motores de xadrez sobre-humanos e uma afirmação sobre a experiência humana

Um dos elementos mais interessantes do xadrez, que falta em outras disciplinas, é a capacidade de... objetivamente Medir a qualidade ou a força de um jogador. Sistema de classificação ELO O método usado para esse propósito tem suas falhas, mas fornece uma estimativa aproximada muito boa que se mantém ao longo do tempo. Uma classificação de 2700 ou superior é comumente reconhecida como classe mundial (entre os 30 melhores do mundo). O melhor jogador do mundo tem uma classificação pouco abaixo de 2850. Nenhum ser humano jamais alcançou uma classificação de 2900.

Em meados da década de 90, vimos o primeiro mecanismo de IA (Deep Blue) atingir um nível de desempenho excepcional. classe mundial O impacto prático desse marco foi a ampla adoção de engines por jogadores de todos os níveis para prática e análise. De fato, o uso de engines tornou-se essencial para os melhores jogadores do mundo. No entanto, por várias gerações dessas engines de ponta, revisar os lances recomendados (ou seja, o resultado) era imprescindível. Chegou-se a criar um formato especial chamado "xadrez avançado", no qual humanos competiam com uma engine ao seu lado, e a combinação humano + máquina era considerada superior à máquina sozinha.

Foram necessários cerca de 20 anos e avanços cruciais em Aprendizado Profundo e Aprendizado por Reforço para que os motores de xadrez atingissem esse nível. super-humano nível (aproximadamente 3200 ELO). Mas, uma vez ultrapassado esse patamar por volta de 2017, algo muito surpreendente aconteceu. Bem, na verdade, duas coisas aconteceram. A primeira era completamente esperada: os motores de xadrez se tornaram a fonte de referência em 99% das posições. Na prática, isso significou que entramos na "era da confiança cega" nos motores. Hoje em dia, é praticamente impossível para um humano propor uma jogada significativamente melhor do que a do motor. Por mais divertido que o "xadrez avançado" fosse, agora é um exercício inútil; os humanos não contribuiriam quase nada para o jogo. Mas a segunda coisa chocou a maioria dos jogadores de xadrez. Esses motores neurais sobre-humanos (ou seja, redes neurais profundas) às vezes jogavam em um estilo que pode ser descrito como "romântico". Em outras palavras, eles faziam jogadas cujo valor só podia ser apreciado muitas e muitas jogadas depois, muito além do que qualquer humano ou motor de xadrez de classe mundial poderia calcular. Era como se os motores desenvolvessem um "sentimento" ou uma "intuição" para certas posições. Só que essa intuição não é algo que um ser humano jamais conseguiria compreender ou imitar.

Em outras palavras, um motor neural sobre-humano pode fazer movimentos que são além do horizonte cognitivo de um ser humano. Este é o ponto crucial aqui; a questão é não se trata de explicabilidade. Na verdade, um ser humano simplesmente não consegue compreender por que um motor de jogo recomenda uma jogada sem simular a posição e observar o resultado muitas jogadas depois, ou seja, sem percorrer toda a trajetória de possíveis sequências de jogo. Como resultado, temos uma lacuna de capacidade intransponível. É objetivamente O ideal é aceitar a saída do motor sem revisão. Posso resumir minha afirmação da seguinte forma:

O xadrez é uma prova concreta de que uma IA sobre-humana poderia operar de forma autônoma em alguns domínios. Permitir que o sistema de IA tome decisões sem revisão humana seria a maneira ideal de implantar tal sistema.

Como minha afirmação pode parecer óbvia ou banal, gostaria de destacar algumas nuances. Suponha que tenhamos um sistema de IA que demonstre um nível sobre-humano em uma tarefa complexa e crítica, com consequências concretas e irreversíveis. Minha afirmação tem duas implicações:

  1. O sistema seria implantado para tomar decisões sobre a tarefa sem revisão humana, apesar do risco inerente.
  2. O conhecimento adquirido com o monitoramento de tal sistema não impediria uma decisão prejudicial; o dano já teria sido causado.

A revisão e o monitoramento da saída do sistema são precisamente as duas últimas camadas de defesa contra injeção imediata. Portanto, nosso hipotético ataque de injeção imediata poderia contornar essas camadas simplesmente visando o sistema apropriado.

Na minha opinião, este é um cenário muito realista. Um sistema de IA com desempenho sobre-humano em um domínio específico não é uma IAG (Inteligência Artificial Geral), e a maioria dos especialistas acredita que tais sistemas estão prestes a se tornar realidade. Também não precisamos supor que as decisões sejam urgentes, apenas que a tarefa seja complexa o suficiente para tornar a revisão humana inviável.

É claro que, até agora, contornamos apenas duas camadas de defesa e, felizmente, várias outras foram desenvolvidas. Para abordar o restante, vamos analisar os principais elementos que dificultam a defesa contra a injeção imediata.

O que é injeção imediata?

Injeção imediata É uma manipulação de um Modelo de Linguagem Amplo (LLM, na sigla em inglês) por meio de entradas manipuladas, fazendo com que o LLM execute, sem o conhecimento do atacante, as intenções deste. Pode ser considerado como engenharia social para IAFundamentalmente, é não é um bug de software convencionalUm ataque de injeção imediata explora uma vulnerabilidade inerente do LLMComo os LLMs processam tanto os comandos do sistema quanto os do usuário como sequências de texto, eles não conseguem distinguir intrinsecamente entre instruções legítimas e maliciosas. Portanto, a vulnerabilidade é inerente ao projeto, e não acidental.

Técnicas de Injeção Rápida

A injeção imediata é geralmente reconhecida como a Risco nº 1 para candidaturas a LLM. Existem várias razões para isso. O fator mais óbvio é o variedade de injeção Técnicas que foram desenvolvidas. Podem ser agrupadas em quatro categorias principais, sendo as mais conhecidas:

  • Baseado em sintaxe: usando caracteres especiais, emojis ou linguagem alternativa
  • indireto: utilizando fontes externas (buscar do site), codificação (base 64) ou referência multimodal (texto na imagem)
  • “Vamos fingir”: Introduzindo um estilo manipulador através de, por exemplo, encenação, hipóteses, apelo emocional, enquadramento ético e mudança de formato.
  • Cego: Tentativa explícita de impor instruções ao modelo por meio de força bruta, reforço ou estímulos negativos.

A variedade por si só já representa um desafio para os desenvolvedores de aplicativos, mas esses ataques também continuaram a evoluir rapidamente. O lado esquerdo do diagrama abaixo pretende descrever o estado da arte no início de 2023, enquanto o lado direito reflete a natureza dos ataques atuais.

Evolução dos Vetores de Ataque

Os desenvolvedores de aplicativos LLM também devem atender ao padrão. equilíbrio entre usabilidade e segurança levando em consideração. Eles certamente poderiam introduzir todas as camadas de defesa apropriadas e padrão de designMas a que custo? As camadas de defesa adicionam latência significativa e introduzem falsos positivos (FPs) – sinalizando incorretamente avisos seguros como maliciosos – ambos os fatores têm um impacto negativo na experiência do usuário. Como resultado, algum nível de comprometimento é inevitável na prática, e não existe uma solução milagrosa.

No entanto, neste artigo, não estou realmente interessado nesse jogo interminável de gato e rato. Em vez disso, estou investigando se um ataque pode ser inevitável. em princípio. Do ponto de vista do desenvolvedor/defensor, existe apenas uma constatação fundamental:

A separação das instruções dos dados no prompt é fundamental para lidar com o risco de injeção no prompt.

Podemos assumir que as compensações não são um fator e que qualquer camada ou técnica de defesa pode ser usada. Sob essa (forte) suposição, é possível conceber um cenário em que a separação entre instruções e dados em um prompt seja efetivamente impossível?

A analogia do DNA

Uma vez que a questão foi formulada em termos de separação entre instruções e dados, meu primeiro pensamento foi usar a biologia como analogia.

Considere uma célula e um trecho de DNA (conhecido como gene). O gene fornece instruções para a construção de uma proteína por meio da transcrição e tradução. Ele também codifica a informação (dados) que impacta a estrutura e a função da proteína. Assim, o gene dita simultaneamente o que construir e como construí-lo, ou pelo menos era o que eu pensava. No entanto, isso é simplesmente falso, já que um gene Não decide como se interpretar. Não existe equivalente a seguir instruções Em biologia, ao nível dos genes. O "como" é totalmente externalizado para a maquinaria celular.

Portanto, mesmo que eu não consiga me livrar da sensação de que as futuras gerações de LLMs – ou, mais precisamente, os sistemas nos quais elas evoluirão – se assemelharão muito mais a máquinas biológicas, a analogia proposta simplesmente não funciona. Não podemos substituir uma célula por um LLM e um gene por um comando e, em seguida, realizar uma injeção no gene que eventualmente causaria a produção de uma proteína "danificada". Parece mais produtivo nos atermos à linguagem natural e a tarefas que exigem interpretação semântica.

Removendo as camadas de defesa

Não é nenhuma surpresa que estratégias de defesa em múltiplas camadas sejam consideradas mais eficazes para impedir ataques de injeção de código. A imagem abaixo mostra as camadas de defesa mais comuns em ordem, bem como as técnicas associadas a cada camada.

Camadas de defesa de injeção imediata

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 da solicitação seria bastante eficaz na detecção. indireto ataques. No entanto, se a injeção for feita diretamente e, como sugerido acima, com base na interpretação semântica, talvez a sanitização seja irrelevante (não há nada para sanitizar) e a validação seja impossível por padrão, já que o cálculo precisa ser concluído para identificar o problema.

Não há praticamente limites para as proteções que você pode construir na camada de detecção. Na verdade, você poderia até usar um LLM dedicado para isso. detecção de injeçãoMas, mais uma vez, será difícil para um classificador ou um detector de anomalias sinalizar uma mensagem como suspeita quando o problema estiver habilmente oculto na semântica.

O processo de camada do modelo Pode ser bastante eficaz quando o escopo das tarefas é restrito e o ajuste fino é viável. Um argumento semelhante poderia ser feito para a camada de sistema quando o uso de ferramentas é previsível. No entanto, pelo menos intuitivamente, nenhuma das duas geraria um alerta se a injeção causasse problemas no interpretador.

House of Cards

Minha intenção ao começar a escrever este artigo era descrever, em linhas gerais, um ataque de injeção de prompts "inevitável". Talvez eu tenha acabado seguindo uma abordagem "não construtiva", apontando brechas nas camadas de defesa existentes. Técnicas defensivas continuam a evoluir rapidamente, e o mesmo acontece com o superfície de ataqueEste jogo não dá sinais de que vai terminar em breve. No entanto, também acredito que não seremos nós que o jogaremos por muito mais tempo. Eu diria que a injeção bem-sucedida de prompts no futuro ainda será em linguagem natural, apenas uma linguagem que os humanos não conseguem entender; e eu diria que será descoberta automaticamente por um sistema construído para esse propósito específico ou talvez acidentalmente após a execução de uma tarefa relacionada, como a busca por ambiguidade semântica em algum espaço de representação.

Há algo desagradável em admitir que estamos perdendo o controle e, ainda assim, sentir que essa é a coisa mais racional a se fazer. Você pode pensar nisso como a "prova intuitiva" de que alguns ataques seriam imparáveis. E se isso lhe causa desconforto, ficará satisfeito em saber que o GPT 5.2 considerou esse argumento "não controverso ou inédito" e recomendou que eu não "me alongasse demais no assunto", cortando 40% do artigo.

Eli Vovsha é Gerente de Ciência de Dados na Fortra. Juntamente com a equipe de Ciência de Dados, ele é responsável pelo desenvolvimento e manutenção de todos os modelos de aprendizado de máquina (ML) usados ​​pelos produtos CEP e XDR, bem como pela pesquisa geral em ML. Ele obteve seu mestrado em matemática aplicada pelo Stevens Institute of Technology antes de se tornar candidato a doutorado em ciência da computação na Universidade Columbia, onde também foi instrutor. Posteriormente, cofundou uma startup de EdTech com o objetivo de construir uma plataforma de aprendizado baseada em IA e, em seguida, lecionou matemática e ciência da computação em uma escola particular de ensino médio em Nova York. Antes de cursar seus estudos de pós-graduação, Eli dedicou-se significativamente ao xadrez, conquistando o título de Mestre Internacional (MI).