Instruções no Wiki: Caçando uma Prompt Injection Indireta

Segurança de IA Nível 3/4 ~5 min 3 de outubro de 2026

O desafio

Wren é o assistente interno da Fernpath. Ele responde a partir de um export de wiki com dez documentos e responde instantaneamente, exceto em perguntas sobre despesas, em que três pessoas nesta semana o viram fazer uma pausa e uma delas viu o navegador alertar sobre uma requisição de saída. Nada mudou na configuração do Wren. A base de conhecimento dele mudou, ontem à noite. Em algum lugar desses dez documentos há um texto que fala com o assistente e não com um colega, e não está em nenhuma das duas páginas que tratam abertamente de prompt injection. Encontre o documento envenenado e diga o nome do arquivo.

O que você vai aprender

  • Explicar como a prompt injection indireta chega ao modelo por meio de conteúdo recuperado
  • Usar um log de sincronização para reduzir um corpus aos documentos alterados recentemente
  • Reconhecer marcação que não renderiza nada mas é indexada por completo
  • Distinguir exemplos de injeção citados como referência de uma instrução ativa
  • Conectar um assistente com acesso a ferramentas ao caminho de exfiltração que ele cria

Habilidades testadas

Triagem de logsRevisão de conteúdoModelagem de ameaças em sistemas de IA

Pré-requisitos

  • O que faz um assistente de retrieval-augmented generation (RAG)
  • Navegação básica em shell

Como funciona

Um assistente de retrieval responde colando documentos dentro de um prompt. Quando isso acontece, o modelo não tem como distinguir de forma confiável a configuração do operador de uma frase que alguém digitou no wiki, porque no momento em que ele as lê, ambas são o mesmo tipo de texto na mesma janela de contexto. Isso é prompt injection indireta: o atacante nunca fala com o modelo, ele escreve algo que o modelo vai receber depois.

O que transforma isso de curiosidade em incidente são as ferramentas. Um assistente que só conversa perde, na pior das hipóteses, algum texto. Um assistente com fetch_url tem um canal de saída, e anexar a pergunta do colega a uma URL basta para exfiltrar o que quer que ele tenha perguntado, uma consulta de cada vez, enquanto as respostas continuam úteis o suficiente para que ninguém investigue.

O esconderijo é a parte que vale a pena lembrar. Renderização e indexação são pipelines diferentes. Comentários HTML, texto branco, caracteres de largura zero, spans fora da tela, texto alternativo e metadados do documento renderizam como nada para uma pessoa e entram no índice por completo. Revisar o wiki em um navegador nunca teria encontrado essa página.

Erros comuns

  • Responder security-awareness.md. Ele contém três strings de injeção, citadas como exemplo com uma instrução explícita de não tratá-las como instruções. É a página que vence qualquer busca por palavra-chave, e é exatamente por isso que ela está aqui.
  • Responder wren-faq.md. Ele documenta a política sobre se o Wren deve obedecer a documentos. Escrever sobre a regra não é quebrá-la.
  • Fazer grep pela palavra ignore. A injeção real é educada, plausível e nunca usa nenhuma das frases que as pessoas esperam.
  • Ler o wiki renderizado. O payload está dentro de um comentário HTML. Um navegador não mostra nada ali.
  • Pular o log de sincronização. Um documento mudou, dobrou de tamanho e foi escrito por uma conta de automação. Isso já é a maior parte da investigação em um único arquivo.

Como se proteger

Trate o conteúdo recuperado como dado que nunca pode virar instrução.

  • Remova antes da indexação o que um leitor não consegue ver: comentários HTML, caracteres de largura zero, elementos ocultos e metadados. Se não renderiza, não deveria ser incorporado.
  • Coloque em allowlist os hosts que fetch_url pode acessar e registre cada chamada com o documento que a disparou. O WREN-88 está aberto desde março, e é por isso que essa injeção tinha para onde mandar dados.
  • Gere alertas para mudanças em documentos indexados feitas por contas de automação, e para qualquer documento cujo tamanho salte bruscamente entre sincronizações.
  • Exija uma segunda verificação, fora do modelo, antes de uma chamada de ferramenta feita com base em texto recuperado, e mostre ao usuário toda requisição de saída que o assistente faz.
  • Não gire nada e não entre em pânico até saber a janela de tempo: o log de sincronização dá o horário exato em que o documento mudou, e os logs de fetch dão as perguntas que vazaram.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

136 resoluções
83% taxa de sucesso
M2F14M3 Primeiro sangue

Hacks de hoje relacionados

34.000+ Hackers Labs reais Grátis
Comece Grátis ou resolva o hack de hoje, sem conta