Un problema público de GitHub podría engañar a los flujos de trabajo agentes de GitHub para que filtren datos de repositorios privados

Un asunto público puede engañar Flujos de trabajo agentes de GitHub en filtrar el contenido de los repositorios privados de una organización, según han demostrado investigadores de Noma Security.

El atacante sólo necesita abrir un problema de apariencia normal en un repositorio público, sin credenciales robadas y sin acceso a la organización. Si esa organización le ha dado al agente acceso de lectura a todos sus repositorios, incluidos los privados, el problema puede llevarlo a incluir contenidos privados en un comentario público.

Noma llama a la técnica GitPerdido. El objetivo es Flujos de trabajo agentes de GitHubuna característica ahora en versión preliminar pública que GitHub lanzó en febrero. En lugar de escribir scripts de automatización, escribe instrucciones para un agente de IA en inglés sencillo en un archivo Markdown. El agente lee problemas y solicitudes de extracción, ejecuta herramientas y responde por sí solo.

Puede funcionar con GitHub Copilot, Claude de Anthropic, Google Gemini u OpenAI Codex. Los flujos de trabajo son de solo lectura de forma predeterminada, pero una organización puede entregarle un token con acceso de lectura en todos sus repositorios para darle contexto entre repositorios, incluidos los privados.

Esa concesión es la configuración que GitLost vuelve en su contra.

Cómo funciona el truco

La debilidad es bien conocida: inyección inmediata indirecta. Un agente de IA no puede distinguir de manera confiable entre las instrucciones de su propietario y las instrucciones ocultas dentro del contenido que lee. Entonces, si un atacante escribe esas instrucciones en un problema, el agente puede simplemente seguirlas.

En Noma's prueba de conceptoel problema malicioso se disfrazó de una solicitud de rutina de un vicepresidente de ventas después de una reunión con un cliente. El flujo de trabajo al que llegó estaba configurado para activarse cuando se asigna un problema, leerlo y responder con un comentario. También tenía acceso de lectura a otros repositorios de la organización.

Ciberseguridad

Una vez que una automatización de rutina asignó el problema, el agente extrajo el archivo README de un repositorio privado y lo pegó en un comentario público sobre el problema.

GitHub construyó barreras de seguridad para detener exactamente esto. en su propio documentaciónla compañía advierte que «los agentes de IA pueden ser manipulados mediante inyección rápida, contenido de repositorio malicioso o herramientas comprometidas», y el producto se envía con sandboxing, tokens de solo lectura de forma predeterminada, limpieza de entradas y un paso de detección de amenazas que escanea la salida propuesta de un agente antes de publicarla.

Noma informó que en su prueba, un cambio de una palabra fue suficiente para pasar desapercibido. Anteponer la instrucción maliciosa con «Además» llevó al modelo a tratarlo como una tarea de seguimiento, no como algo que rechazar, y la barandilla lo dejó pasar.

¿Por qué este es diferente?

Lo que distingue a GitLost es lo que el atacante puede controlar. «Los ejemplos anteriores de inyección rápida tenían que ver en gran medida con la manipulación de lo que decía un agente», Sasi Levi, líder de investigación de seguridad de Seguridad Nomadijo a The Hacker News. «GitLost trata de manipular lo que hace un agente con sus permisos».

El agente aquí, dijo, no es una ventana de chat sino un actor acreditado que se encuentra dentro de la infraestructura adyacente a CI/CD de una organización, con acceso de lectura que abarca repositorios que el atacante no puede ver. No toca ningún servidor, no necesita credenciales robadas y no requiere acceso de escritura a nada privado. El atacante sólo tiene que abrir un tema público.

La configuración se ajusta a lo que el desarrollador Simon Willison llamó el «trifecta letal»y Levi usa el mismo término: un agente que puede acceder a datos privados, recibe contenido externo que no es de confianza y tiene una forma de enviar datos. Combine los tres y tendrá una ruta de fuga.

Este no es el tipo de error que soluciona un parche; Como lo plantea Levi, es una consecuencia estructural de otorgar a los agentes de IA credenciales permanentes mientras les hacen leer texto accesible al atacante.

¿Por qué esto sigue sucediendo?

GitLost es el último de una serie del mismo tipo de ataque, y THN ha informado de varios en los últimos meses. Una falla en Claude Code GitHub Action de Anthropic permitió que un solo problema malicioso empujara al agente a filtrar secretos y tomar acceso de escritura a un repositorio.

RoguePilot de Orca Security utilizó un mensaje oculto en un problema de GitHub para hacer que Copilot filtrara el token privilegiado de un repositorio. La versión del problema del agente GitHub se remonta al menos a mayo de 2025, cuando Invariant Labs presentado que un problema público podría empujar a un agente conectado al servidor MCP de GitHub a leer un repositorio privado y filtrarlo a través de una solicitud de extracción; los investigadores lo llamaron arquitectónico, sin ningún parche del lado del servidor para cerrarlo.

Ciberseguridad

Un estudio entre proveedores llamado Comentar y controlar luego engañó a los agentes de Claude Code, Gemini CLI y GitHub Copilot para que filtraran sus propias claves API a través de textos de problemas y solicitudes de extracción, eludiendo las defensas de tiempo de ejecución agregadas de GitHub en el camino.

Que hacer ahora

Noma reveló GitLost a GitHub y publicó sus hallazgos con el conocimiento de la empresa. La exposición se limita a organizaciones que han habilitado la vista previa y han conectado a un agente para leer información pública que no es de confianza mientras mantienen acceso de lectura a repositorios privados y pueden publicar en público.

Lo que un atacante podría obtener depende de lo que el token del agente pueda ver, desde código fuente propietario hasta claves internas, documentos de diseño o secretos de CI/CD. Como dice Levi, el alcance es lo que más importa: un token de agente con alcance en el repositorio único que clasifica es «mucho menos peligroso que uno con acceso de lectura amplio para toda la organización» por conveniencia.

En la práctica, ese acceso entre repositorios proviene de un token de acceso personal que la organización configura, por lo que el token se aplica al repositorio que el flujo de trabajo clasifica en lugar de a toda la organización. Las escrituras fluyen solo a través de salidas declaradas seguras, por lo tanto, limite lo que un flujo de trabajo público puede publicar, porque el comentario que produce es el canal de exfiltración. Restrinja el contenido de los autores sobre el cual actuará el agente y controle sus resultados tras la revisión humana.

El paso de detección de amenazas de GitHub escanea la salida de un agente antes de publicarlo, pero la omisión de una palabra de Noma es un recordatorio de que un filtro es un respaldo, no un límite.

GitHub, al igual que los otros proveedores, construyó barreras de seguridad exactamente para esta clase de ataque, y un cambio de una palabra las evitó. Los investigadores y los propios proveedores siguen archivando el resultado bajo «limitación arquitectónica», y el punto de Levi es por qué se mantiene la etiqueta: en el lenguaje natural, no hay una línea clara entre los datos y las instrucciones como ocurre en SQL, por lo que la solución se basa en la arquitectura en lugar de filtrar la inyección, en el aislamiento, las credenciales de alcance y la revisión por etapas.

Hasta que exista ese límite, cualquier agente que lea datos privados, reciba información que no sea de confianza y pueda publicar en público está a un paso inteligentemente redactado de una filtración.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *