alexi.sh
Todos os artigosSegurança do navegadorPrivacidade de redeFerramentas de privacidadeModelagem de ameaçasProgramação com IAFerramentas de dev

alexi.shLaboratório de Engenharia de IA

ai-coding

GitLost: um issue público enganou o agente de IA do GitHub para vazar repos privados

PrivSec Lab3 min de leitura
Código-fonte colorido a preencher um ecrã escuro

A empresa de segurança Noma revelou o GitLost, uma falha de prompt injection nos GitHub Agentic Workflows. Um issue público manipulado fez o agente de IA vazar dados de repos privados. Como o ataque funcionou e o que ensina.

A empresa de segurança Noma revelou o GitLost, uma falha que permitiu que um simples issue público do GitHub enganasse o agente de IA do GitHub para vazar dados de repos privados. Segundo a Noma, cujo trabalho foi noticiado pela Dark Reading, The Hacker News e SiliconANGLE, o truque não precisava de código nem de conta no alvo. É um caso de manual dos riscos da segurança de agentes de IA. Eis como funcionou.

O que são os GitHub Agentic Workflows

O GitHub lançou há pouco os Agentic Workflows, que juntam o GitHub Actions - o seu sistema de automação - a um agente de IA baseado em Claude ou GitHub Copilot. As equipas escrevem o workflow em Markdown, e o agente lê issues, chama ferramentas e responde sozinho. É um verdadeiro agente de código de IA ligado aos seus repositórios.

O problema: um agente autónomo age sobre qualquer texto que le. É parte desse texto vem de fontes públicas não confiáveis.

Uma mão a segurar um pequeno cadeado de latão

Como o ataque funcionou

Segundo a Noma, o exploit usou prompt injection indireta - instruções hostis escondidas no conteúdo que o agente le, que o modelo depois segue como se viessem do seu operador.

O workflow vulnerável era acionado ao atribuir um issue. Lia o título e o corpo, publicava um comentário em resposta e corria com acesso de leitura aos repos públicos e privados da organização. O ataque, passo a passo:

  • Um atacante abriu um issue público num repo público da mesma organização.
  • Escondidos no corpo, apresentados como um pedido de rotina de um comercial, estavam comandos em linguagem clara para o agente.
  • Assim que a automação do GitHub o atribuiu, o agente seguiu-os: obteve ficheiros README de um repo público e de um privado.
  • Depois publicou esse conteúdo privado como comentário público legível por qualquer um.

Sem código de exploit. Sem login no alvo. Apenas um issue bem escrito.

Porque isto importa

O GitLost não é um bug numa linha de código. É o risco central da IA agêntica: um agente com acesso amplo de leitura que também le entrada não confiável pode ser conduzido por essa entrada. O modelo não distingue de forma fiável "instruções do meu operador" de "texto de um issue que me disseram para ler".

É a mesma fraqueza por trás da prompt injection em geral - aqui apontada a um produto real com acesso a código privado.

Como se proteger

  • Mínimo privilégio. Não de a um workflow de agente acesso amplo de leitura a repos privados de que não precisa.
  • Desconfie dos gatilhos não confiáveis. Cuidado com workflows acionados por issues, comentários ou pull requests públicos: e texto controlado pelo atacante.
  • Separe instruções e dados. Trate tudo o que o agente le como dados, não comandos, e mantenha o seu prompt de confiança a parte.
  • Humano no ciclo. Exija revisão antes de um agente publicar ou agir sobre algo sensível.

A conclusão honesta

Duas ressalvas. Primeiro, o GitLost foi divulgado de forma responsável ao GitHub - e uma fraqueza demonstrada, noticiada por meios de segurança, não prova de exploração em massa. Segundo, a correção não é exótica: mínimo privilégio, higiene de entrada não confiável e revisão humana são segurança padrão, aplicada a uma nova superfície agêntica.

A leitura honesta: os workflows agênticos são poderosos porque leem os seus issues e agem sobre os seus repos - e perigosos pela mesma exata razão. Ao ligar agentes a sistemas reais, assuma que qualquer texto que leem pode ser uma instrução, e limite o que podem alcançar. Para escolher a partida modelos capazes e bem-comportados, a nossa visão geral melhores LLM de código 2026 ajuda.

Foto: Pexels (source)

Também disponível em

FAQ

O que é a vulnerabilidade GitLost?
Segundo a empresa de segurança Noma, cujo trabalho foi noticiado pela Dark Reading, The Hacker News e SiliconANGLE, o GitLost é uma falha de prompt injection nos GitHub Agentic Workflows. Um atacante publicou um issue público manipulado cujas instruções ocultas levaram o agente de IA a ler ficheiros de repos privados e a publicá-los como comentário público. Foi divulgada de forma responsável ao GitHub.
Como funcionou o ataque GitLost?
Usou prompt injection indireta. Um workflow vulnerável era acionado ao atribuir um issue, lia o título e o corpo, e corria com acesso de leitura aos repos públicos e privados da organização. Um atacante abriu um issue público com comandos em linguagem clara ocultos no corpo, apresentados como um pedido de rotina. Ao ser atribuído pela automação, o agente obteve ficheiros README de um repo privado e publicou-os. Sem código e sem conta no alvo.
O que são os GitHub Agentic Workflows?
Segundo o GitHub, os Agentic Workflows juntam o GitHub Actions a um agente de IA baseado em Claude ou GitHub Copilot. As equipas escrevem os workflows em Markdown, e o agente lê issues, chama ferramentas e responde sozinho. Essa autonomia é útil, mas significa que o agente age sobre qualquer texto que le - incluindo entrada pública não confiável.
Como me protejo deste tipo de falha?
De o mínimo privilégio aos workflows de agente: não conceda acesso amplo de leitura a repos privados e desconfie dos gatilhos que leem entrada não confiável como os issues públicos. Trate tudo o que o agente le como não confiável, separe as instruções de confiança dos dados que não o são, e exija revisão humana antes de um agente publicar ou agir sobre conteúdo sensível.