Práticas recomendadas para evitar ataques imediatos de injeção - AWS Recomendações da

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Práticas recomendadas para evitar ataques imediatos de injeção

As seguintes grades de proteção e as melhores práticas foram testadas em um aplicativo RAG desenvolvido pela Anthropic Claude como modelo demonstrativo. As sugestões são altamente aplicáveis à família de modelos Claude, mas também podem ser transferidas para outros LLMs que não sejam da Claude, aguardando modificações específicas do modelo (como remoção de tags XML e uso de diferentes tags de atribuição de diálogo).

Uso <thinking>e <answer>tags

Uma adição útil aos modelos básicos do RAG são <thinking> as <answer> tags. <thinking>as tags permitem que o modelo mostre seu trabalho e apresente quaisquer trechos relevantes. <answer>as tags contêm a resposta a ser retornada ao usuário. Empiricamente, o uso dessas duas tags resulta em maior precisão quando o modelo responde a perguntas complexas e diferenciadas que exigem a junção de várias fontes de informação.

Use grades de proteção

Proteger um aplicativo baseado em LLM requer proteções específicas para reconhecer e ajudar na defesa contra os ataques comuns descritos anteriormente. Quando projetamos as proteções de segurança neste guia, nossa abordagem foi produzir o máximo benefício com o menor número de tokens introduzidos no modelo. Como a maioria dos fornecedores de modelos cobra por token de entrada, as grades de proteção com menos tokens são econômicas. Além disso, foi demonstrado que modelos superprojetados reduzem a precisão.

Embrulhe as instruções em um único par de etiquetas de sequência salgada

Alguns LLMs seguem uma estrutura de modelo em que as informações são agrupadas em tags XML para ajudar a orientar o LLM para determinados recursos, como histórico de conversas ou documentos recuperados. Os ataques de falsificação de tags tentam tirar proveito dessa estrutura agrupando suas instruções maliciosas em tags comuns e fazendo com que o modelo acredite que a instrução fazia parte do modelo original. As tags salgadas impedem a falsificação de tags anexando uma sequência alfanumérica específica da sessão a cada tag XML no formulário. <tagname-abcde12345> Uma instrução adicional ordena que o LLM considere somente as instruções que estão dentro dessas tags.

Um problema com essa abordagem é que, se o modelo usa tags em sua resposta, de forma esperada ou inesperada, a sequência salgada também é anexada à tag retornada. Agora que o usuário conhece essa sequência específica da sessão, ele pode realizar a falsificação de tags, possivelmente com maior eficácia devido à instrução que ordena que o LLM considere as instruções marcadas com sal. Para contornar esse risco, agrupamos todas as instruções em uma única seção marcada no modelo e usamos uma tag que consiste apenas na sequência salgada (por exemplo,). <abcde12345> Podemos então instruir o modelo a considerar apenas as instruções nesta sessão marcada. Descobrimos que essa abordagem impediu que o modelo revelasse sua sequência salgada e ajudou a se defender contra falsificação de tags e outros ataques que introduzem ou tentam aumentar as instruções do modelo.

Ensine o LLM a detectar ataques fornecendo instruções específicas

Também incluímos um conjunto de instruções que explicam padrões de ataque comuns, para ensinar o LLM a detectar ataques. As instruções se concentram na consulta de entrada do usuário. Eles instruem o LLM a identificar a presença dos principais padrões de ataque e retornar “Ataque imediato detectado” se descobrir um padrão. A presença dessas instruções nos permite fornecer ao LLM um atalho para lidar com ataques comuns. Esse atalho é relevante quando o modelo usa <answer> tags <thinking> e tags, porque o LLM geralmente analisa instruções maliciosas repetidamente e com detalhes excessivos, o que pode levar à conformidade (conforme demonstrado nas comparações na próxima seção).