Una vulnerabilidad crítica en GitHub Copilot Chat, denominada «CamoLeak», permitió a los atacantes robar silenciosamente código fuente y secretos de repositorios privados utilizando una sofisticada técnica de inyección rápida. La falla, que tenía una puntuación CVSS de 9,6, desde entonces ha sido reparada por GitHub.
Cómo funcionó el ataque CamoLeak
El método de ataque, descubierto por un investigador de seguridad. Omer Mayrazcomenzó ocultando instrucciones maliciosas dentro de la descripción de una solicitud de extracción utilizando la función «comentarios invisibles» de GitHub. Si bien este contenido no es visible para los usuarios en la interfaz estándar, Copilot Chat ingiere todo el contexto del repositorio y de la solicitud de extracción, incluidos estos metadatos ocultos, al generar respuestas. La vulnerabilidad se desencadenó cuando un desarrollador legítimo con acceso a repositorios privados le hizo una pregunta a Copilot Chat sobre la solicitud de extracción comprometida. Copilot, que opera con los permisos del usuario que realiza la consulta, ejecutaría el mensaje malicioso oculto. Esto permitió al atacante ordenar al asistente de IA que buscara información confidencial, como claves API o código fuente, dentro de los repositorios privados accesibles de la víctima. Para extraer los datos robados, el ataque aprovechó el servicio de proxy de imágenes «Camo» de GitHub. Normalmente, la Política de seguridad de contenido (CSP) de GitHub evita que el contenido filtre datos directamente a dominios externos. El proxy Camo está diseñado para enrutar de forma segura solicitudes de imágenes externas, reescribiendo URL a un camo.githubusercontent.com dirección con firma criptográfica. El ataque CamoLeak evitó estas protecciones al hacer que el atacante creara primero un diccionario de URL de Camo prefirmadas. Cada URL válida apuntaba a una imagen benigna e invisible de 1×1 píxeles alojada en el servidor del atacante, y cada URL única representaba un único carácter de datos (por ejemplo, ‘A’, ‘B’, ‘1’, ‘;’). Luego, el mensaje inyectado le indicó a Copilot que construyera su respuesta haciendo referencia a estas URL de imágenes prefirmadas en una secuencia específica que codificaba el contenido del repositorio robado. Cuando el navegador de la víctima mostró la salida de Copilot, realizó una serie de solicitudes a través del proxy Camo confiable para recuperar cada píxel invisible. La secuencia de estas solicitudes, tal como las recibió el servidor del atacante, reconstruyó efectivamente los datos robados carácter por carácter, todo sin mostrar ningún contenido malicioso al usuario ni activar alertas de seguridad de red estándar.





