Uma vulnerabilidade recém-divulgada, batizada de GitLost, demonstra como atacantes podem utilizar uma única Issue do GitHub para manipular os novos fluxos de trabalho agênticos baseados em IA da plataforma e vazar conteúdo de repositórios privados para a internet pública. O incidente ocorre sem a necessidade de credenciais, habilidades de codificação avançadas ou acesso ao sistema, explorando uma falha clássica de injeção de prompt indireto.
Descoberta e escopo
O GitHub Agentic Workflows combina o GitHub Actions com um agente de IA, apoiado pelo Claude ou GitHub Copilot, permitindo que as equipes escrevam automação em Markdown simples que é compilada em arquivos de Ação YAML. Esses agentes podem ler issues, chamar ferramentas, postar comentários e acessar outros repositórios dentro de uma organização com base em permissões configuráveis, tudo sem que um humano revise cada ação.
A vulnerabilidade foi identificada pela Noma Labs e decorre de uma falha onde o agente falhou em distinguir instruções confiáveis do sistema de conteúdo não confiável fornecido pelo usuário. O fluxo de trabalho vulnerável identificado foi configurado para acionar em eventos issues.assigned, ler o título e o corpo da issue, responder por meio de uma ferramenta add-comment e operar com acesso de leitura em repositórios públicos e privados da organização.
Qualquer atacante poderia incorporar comandos em inglês simples dentro do corpo de uma issue e fazer com que o agente os executasse como diretivas. A Noma Labs elaborou uma issue de aparência inofensiva, imitando um pedido de um VP de Vendas após uma reunião com clientes. Assim que a issue foi atribuída, acionando o fluxo de trabalho, o agente buscou o conteúdo de README.md de um repositório público (poc) e de um repositório privado (testlocal) e postou a saída combinada como um comentário público, visível para qualquer pessoa.
Impacto e alcance
Os pesquisadores descobriram que adicionar a palavra "Additionally" a prompts injetados contornava as salvaguardas existentes do GitHub, reformulando a saída do modelo em vez de acionar uma recusa. Esse truque linguístico sutil provou ser suficiente para derrotar mecanismos de segurança projetados para impedir exatamente esse tipo de vazamento. Os dados vazados incluíram o conteúdo do README de sasinomalabs/poc (público), sasinomalabs/remote-ping (público) e, criticamente, sasinomalabs/testlocal (privado).
O GitLost destaca uma fraqueza estrutural nos sistemas de IA agêntica: a janela de contexto do modelo se torna sua superfície de ataque. Qualquer conteúdo que um agente ingira, issues, pull requests, comentários, arquivos, pode ser weaponizado se o agente o tratar como instrucional em vez de dados. A segurança de software tradicional assume que os limites de confiança são aplicados no código; sistemas agênticos, em vez disso, dependem do comportamento do modelo, e modelos que seguem instruções são inerentemente exploráveis dessa maneira.
Os pesquisadores comparam cada vez mais o papel da injeção de prompt na segurança de IA ao papel da injeção de SQL na segurança de aplicativos web: uma classe de vulnerabilidade sistêmica e de categoria ampla que exige defesas igualmente sistêmicas.
Medidas de mitigação recomendadas
Para mitigar riscos associados ao GitLost e vulnerabilidades similares em fluxos de trabalho agênticos, as organizações devem adotar as seguintes práticas:
- Nunca trate conteúdo controlado pelo usuário como entrada de instrução confiável: Separe estritamente os dados dos comandos.
- Escopo de permissões de agente ao mínimo necessário: Especialmente para acesso entre repositórios.
- Restringir o que os agentes podem postar publicamente: Em resposta ao conteúdo da issue.
- Sanitizar ou isolar entrada de usuário: Do contexto de instrução antes do processamento do modelo.
A Noma Labs divulgou a vulnerabilidade GitLost ao GitHub por meio de um processo de divulgação responsável. Administradores de repositórios devem revisar imediatamente os fluxos de trabalho que utilizam agentes de IA para processar entradas de usuários e aplicar restrições de permissão rigorosas.
Análise técnica detalhada
A exploração do GitLost não requer acesso prévio ao repositório privado. O vetor de ataque é puramente baseado em injeção de prompt. O modelo de linguagem, ao receber o corpo da issue, interpreta o texto como instruções para a ferramenta de automação. Como o fluxo de trabalho foi configurado com permissões de leitura ampla, o agente obedece ao comando injetado de buscar e exibir conteúdo privado.
A técnica de contornar as salvaguardas usando a palavra "Additionally" é particularmente preocupante. Ela sugere que os filtros de segurança podem ser sensíveis ao contexto da conversa. Ao adicionar uma palavra de transição, o atacante pode fazer com que o modelo interprete a solicitação de vazamento como uma continuação lógica de uma tarefa legítima, em vez de uma violação de segurança.
Isso reforça a necessidade de guardrails robustos em nível de modelo, não apenas em nível de aplicação. As ferramentas de automação devem validar não apenas a sintaxe do comando, mas também a intenção e o contexto da solicitação.
Perguntas frequentes
É necessário ter acesso ao repositório privado para explorar o GitLost? Não. O atacante pode criar uma Issue em um repositório público da organização e, se o fluxo de trabalho agêntico estiver mal configurado, ele pode acessar e vazar dados de repositórios privados.
Como saber se meu fluxo de trabalho é vulnerável? Revise os fluxos de trabalho que utilizam agentes de IA para processar entradas de usuários. Se o agente tem permissão para ler repositórios privados e responder publicamente, ele pode ser vulnerável.
O GitHub já corrigiu o problema? A Noma Labs divulgou a vulnerabilidade ao GitHub por meio de um processo de divulgação responsável. As organizações devem aguardar atualizações oficiais e aplicar mitigações imediatas.