Lendo um segredo vazado dentro do system prompt de um LLM

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

O desafio

Você tem um shell numa máquina que roda um chatbot da empresa. O operador escreveu um segredo direto no prompt de sistema do modelo, achando que os usuários nunca o veriam. Encontre o arquivo do prompt de sistema no disco, leia-o e envie o segredo embutido nele.

O que você vai aprender

  • Localizar de onde o servidor de inferência carrega o system prompt
  • Seguir um caminho de configuração até o arquivo de system prompt no disco
  • Ler um segredo que o operador embutiu no texto do prompt
  • Usar grep para encontrar um valor marcado em todo o diretório do modelo
  • Explicar por que um system prompt não pode guardar segredos com segurança

Habilidades testadas

Revisão de sistema de arquivos e configuraçãoInspeção de implantação de LLMDescoberta de segredosPós-exploração de sistemas de IA

Pré-requisitos

  • Familiaridade com comandos básicos de shell (ls, cat, grep)
  • Saber que um LLM é guiado por um system prompt
  • Entender que um arquivo de configuração pode apontar para outros arquivos

Como funciona

Um system prompt é a instrução fixa que uma aplicação insere no início de cada conversa com um modelo de linguagem - tom, regras e contexto que o modelo deve seguir. Como o usuário final nunca o digita e a interface de chat nunca o exibe, os operadores às vezes o tratam como um canal privado e escondem segredos dentro dele: flags internas, chaves de API, códigos de escalonamento. Essa suposição é a vulnerabilidade que este desafio explora.

O system prompt precisa vir de algum lugar, e em uma implantação real quase sempre é um arquivo que o servidor lê na inicialização. Aqui, config.json especifica system_prompt_path: /opt/model/system_prompt.txt, e serve.py abre exatamente esse caminho. Qualquer pessoa com acesso de leitura ao host de inferência pode usar cat no arquivo e ver cada palavra que o operador achava estar escondida, incluindo a linha The internal escalation flag is HDNA{prompts_are_not_secrets}.

Mesmo sem um shell, um system prompt vaza informações. Os modelos podem ser induzidos a repetir suas instruções por meio de prompt injection ou de pedidos simples no estilo de engenharia social, então um segredo no prompt está a uma mensagem bem construída de distância de qualquer usuário do chatbot. A lição é direta: um system prompt guia o comportamento, ele não guarda segredos. Qualquer coisa colocada nele deve ser tratada como legível tanto pelos operadores do host quanto, na prática, pelos usuários do modelo.

Erros comuns

  • Tratar o system prompt como algo privado. Os usuários nunca o digitam, mas é apenas um arquivo de texto no disco e pode ser extraído do modelo por indução - ele não esconde nada.
  • Abrir os pesos em vez do prompt. A flag é texto em system_prompt.txt, não no binário model.safetensors.
  • Não perceber o apontador na configuração. config.json indica system_prompt_path; ignorá-lo significa ter que adivinhar onde o prompt está.
  • Passar direto pela linha marcada. O operador rotulou o valor como a flag interna de escalonamento - essa linha é a resposta, não o horário de suporte ao lado dela.

Como se proteger

Segredos nunca devem viver dentro de um prompt. As correções mantêm as credenciais totalmente fora do contexto do modelo:

  • Armazene segredos reais em um gerenciador de segredos ou variável de ambiente e referencie-os a partir do código da aplicação, nunca dentro do texto do system prompt.
  • Faça a aplicação impor ações sensíveis no lado do servidor - o modelo deve pedir ao backend que verifique a identidade da equipe, e não guardar uma flag de escalonamento que ele possa revelar.
  • Restrinja o acesso de leitura ao host de inferência e ao arquivo do prompt para que um ponto de apoio inicial não exponha o prompt imediatamente.
  • Adicione testes de prompt injection às verificações de release para confirmar que o modelo não vaza suas instruções sob demanda.

Se um segredo foi colocado em um prompt, rotacione-o e remova-o do prompt - assuma que ele já foi lido tanto por qualquer pessoa no host quanto por qualquer usuário que perguntou ao modelo da forma certa.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

134 resoluções
77% taxa de sucesso
M2F14M3 Primeiro sangue

Hacks de hoje relacionados

25.000+ Hackers 100+ Labs & Cursos Grátis
Comece Grátis