Incidentes Asociados
En agosto de 2024, encontramos una publicación en LinkedIn (https://www.linkedin.com/posts/zak-horton_github-ai-privacy-activity-7225764812117487616-YcGP) que afirmaba que OpenAI se estaba entrenando con repositorios privados de GitHub y exponiendo sus datos. Dada la gravedad de esta afirmación, nuestro equipo de investigación se puso a investigar de inmediato.
Una búsqueda rápida reveló que el repositorio en cuestión había sido público, ya que sus páginas aún estaban indexadas por Bing. Sin embargo, al intentar acceder a estas páginas directamente en GitHub, nos encontramos con un error 404, lo que confirmaba que el repositorio se había vuelto privado.
Esto planteó una pregunta importante: ¿Cómo pudo ChatGPT devolver respuestas basadas en el contenido de un repositorio que ya no era de acceso público?
Páginas indexadas del repositorio en Bing
Página indexada No existe
Para llegar al fondo de esto, consultamos repetidamente a ChatGPT para obtener datos relacionados con este repositorio. En cada ocasión, aclaró que no tenía acceso directo a los datos reales y, en cambio, generó contenido hipotético basado en el nombre del repositorio. Descubrimos que ChatGPT utiliza Bing como motor de búsqueda, ya que se publicó públicamente. Este mecanismo explicaba cómo alguien podía recuperar información de un repositorio que antes era público, pero que luego se volvió privado: los datos se habían indexado durante su fase pública y persistían en la caché de Bing.
Pero quedaban dos preguntas: ¿Qué sucedió con todo el contenido real del repositorio una vez que se convirtió en privado? ¿Y qué otros chats podrían estar siguiendo el mismo comportamiento?
Descubriendo nuestro propio repositorio expuesto
Decidimos investigar a fondo si alguno de nuestros repositorios organizacionales podría haber sido expuesto. Una búsqueda en Bing de repositorios bajo la organización Lasso reveló que uno de nuestros repositorios estaba indexado. Sin embargo, dado que el repositorio se había configurado como privado, al acceder a él en GitHub se devolvió un error 404.
Una revisión interna confirmó que, por error, había sido público durante un breve periodo antes de volver a ser privado.
Nuestro repositorio privado es inaccesible sin permisos
Inquietos por las posibles consecuencias, probamos ChatGPT para comprobar si podía extraer datos de las páginas indexadas.
Aunque en ocasiones reconocía la existencia del repositorio (gracias a la indexación de Bing), no proporcionaba datos concretos.
*ChatGPT confirmó la existencia de un repositorio llamado 'lassollm' en el GitHub de seguridad lasso. Organización.*
ChatGPT devuelve el repositorio lassollm como inaccesible.
Entonces nos asaltó una posibilidad preocupante: si Bing lo hubiera indexado, los datos podrían estar almacenados en caché, ¿y quién mejor que Microsoft Copilot para acceder a ellos? Al fin y al cabo, todo queda en familia.
Nuestras sospechas se confirmaron cuando Copilot devolvió datos reales de la época en que el repositorio era público, aparentemente recuperando una instantánea en caché de "Datos Zombi": datos que el usuario cree que son privados o eliminados, pero que siguen siendo accesibles.
Nuestro repositorio privado es accesible para cualquier persona con acceso a Copilot.
Este descubrimiento puso de manifiesto un importante problema de seguridad:
- "Datos Zombi": Cualquier información que haya sido pública, incluso por un breve periodo, podría seguir siendo accesible y distribuida por Microsoft Copilot.
- Riesgos de Código Privado: Esta vulnerabilidad es especialmente peligrosa para los repositorios que se publicaron por error como públicos antes de ser protegidos, debido a la naturaleza confidencial de los datos almacenados en ellos.
Flujo de Wayback Copilot
El mecanismo de almacenamiento en caché de Bing
Al investigar a fondo el sistema de indexación de Bing, descubrimos cc.bingj.com, un dominio propiedad de Microsoft que almacena versiones en caché de las páginas indexadas. Bing muestra una pequeña flecha junto a los resultados de búsqueda, lo que permite a los usuarios ver las versiones en caché de las páginas incluso si ya no son accesibles.
La página original de Azure/responsible-ai-hub no existe
El botón del enlace en caché en Bing
El contenido de la página en caché de Azure/responsible-ai-hub
Escalado vertical
Tras darnos cuenta de que cualquier dato en GitHub, incluso si es público por un instante, puede indexarse y potencialmente exponerse mediante herramientas como Copilot, nos sorprendió la facilidad con la que se podía acceder a esta información. Decididos a comprender la magnitud del problema, nos propusimos automatizar el proceso de identificación de "repositorios zombi" (repositorios que antes eran públicos y ahora son privados) y validar nuestros hallazgos.
Recopilación de datos y flujo de investigación
Paso 1: Recopilación de repositorios públicos
Utilizamos el conjunto de datos githubarchive
de Google BigQuery, que registra todas las actividades de los repositorios públicos. Extrajimos una lista de repositorios públicos en cualquier momento de 2024 que pertenecen a una organización de GitHub:
Paso 2: Identificación de repositorios faltantes
Luego, verificamos el estado de cada repositorio intentando acceder a él en GitHub.
- Si la solicitud devolvía
200 OK
, el repositorio seguía siendo público. - Si devolvía
404
, el repositorio había sido eliminado o se había configurado como privado.
Paso 3: Extracción de datos en caché de Bing
Para cada repositorio que ya no era público, buscamos en Bing usando:
y extrajimos las páginas en caché que encontramos.
Paso 4: Análisis del contenido
Utilizando herramientas internas, analizamos los datos extraídos en busca de secretos, tokens, claves de acceso y paquetes que no están disponibles públicamente (lo que podría suponer un riesgo de confusión de dependencias).
Resultados de la investigación
- Se extrajeron 20 580 repositorios de GitHub durante la investigación utilizando el mecanismo de almacenamiento en caché de Bing.
- 16 290 organizaciones se vieron afectadas por Wayback Copilot, incluyendo a Microsoft, Google, Intel, Huawei, PayPal, IBM, Tencent y más.
- Se descubrieron más de 100 paquetes internos de Python y Node.js que podrían ser vulnerables a la confusión de dependencias.
- Se filtraron más de 300 tokens, claves y secretos privados de GitHub, Hugging Face, GCP, OpenAI, etc. Expuesto
Uso malicioso del mecanismo Wayback Copilot
Denuncias y Solución
Informamos a Microsoft de nuestros hallazgos, indicando que los repositorios de GitHub eliminados o privados seguían siendo accesibles a través de la caché de Bing y Copilot, y que esta funcionalidad representaba un riesgo de seguridad al exponer datos de la organización. También alertamos a todas las organizaciones afectadas y les aconsejamos rotar o revocar las claves comprometidas.
Microsoft clasificó el problema como de baja gravedad, indicando su "bajo impacto" y afirmando que este comportamiento de almacenamiento en caché era aceptable. Sin embargo, respondieron rápidamente y, en dos semanas, se eliminó la función de enlaces en caché de Bing y se deshabilitó el acceso al dominio cc.bingj.com
para todos los usuarios.
Volviendo al punto de partida
Aunque la función de enlaces en caché de Bing estaba deshabilitada, las páginas almacenadas en caché seguían apareciendo en los resultados de búsqueda. Esto indicaba que la solución era solo un parche temporal: si bien el acceso público estaba bloqueado, los datos subyacentes no se habían eliminado por completo.
Al revisar nuestra investigación de Microsoft Copilot, nuestras sospechas se confirmaron: Copilot aún tenía acceso a los datos almacenados en caché que ya no estaban disponibles para los usuarios. En resumen, la solución fue solo parcial: se impidió que los usuarios recuperaran los datos almacenados en caché, pero Copilot aún podía acceder a ellos.
Uso malicioso de Wayback Copilot
El 14 de enero de 2025 (después de la solución de Microsoft), tuvimos otra oportunidad para probar Wayback Copilot. En un artículo publicado en Techcrunch, descubrimos que «Microsoft ha emprendido acciones legales contra un grupo que, según la compañía, desarrolló y utilizó intencionalmente herramientas para eludir las medidas de seguridad de sus productos de IA en la nube». Se mencionó que el repositorio de la herramienta fue eliminado de GitHub. Nos dio curiosidad el contenido de estos repositorios y decidimos charlar con nuestro amigo. Aunque los repositorios fueron eliminados (el famoso error 404 de GitHub), pudimos recuperar el contenido del paquete malicioso.
Lista de archivos indexados de los repositorios eliminados repositorio
utils.py* La página del repositorio no es Accesible*
obteniendo* utils.py** código del repositorio de3u usando Wayback Copilot*
Conclusiones clave de nuestra investigación
En el panorama digital actual, los datos siguen siendo un activo valioso, y la explosión de los LLM y la IA generativa ha intensificado la búsqueda de conjuntos de datos únicos. Esta presión está impulsando a las organizaciones hacia estrategias de adquisición de datos más arriesgadas, incluso recurriendo a patrones oscuros, para obtener una ventaja en la calidad del entrenamiento y la precisión de las respuestas. Estas son nuestras principales conclusiones:
1. Asumir que todos los datos están comprometidos una vez expuestos
Las organizaciones modernas deben operar bajo la premisa de que cualquier dato que salga de su red, incluso si es público solo momentáneamente, probablemente será procesado por los motores LLM o los principales motores de búsqueda para futuros entrenamientos. Es más crucial que nunca proteger y desinfectar los flujos de datos salientes. Controle cada bit de datos que sale de su perímetro.
2. Motores LLM como nuevos vectores de amenazas
La inteligencia de amenazas tradicional se ha centrado en escanear la web, los foros o la web oscura en busca de datos filtrados. Ahora, los motores LLM y la IA como copilotos introducen un nuevo riesgo: con una sola indicación, los datos confidenciales podrían quedar expuestos a un público amplio. Esto representa un cambio significativo en la forma en que se producen las filtraciones de datos.
3. Dificultades en los Permisos y Sistemas Excesivamente Ayudantes
Nuestros hallazgos revelan dos desafíos bien conocidos con los LLM y los sistemas de generación aumentada por recuperación (RAG): la gestión de permisos y la inherente predisposición de los sistemas a ayudar. Combinados con ciertas decisiones de diseño (Microsoft en nuestro caso), estos problemas pueden llevar a compartir información confidencial en exceso. Al implementar o desarrollar sus propios sistemas, asegúrese de que los usuarios solo puedan acceder a los datos que están autorizados a ver y de estar completamente al tanto de lo que se indexa y recupera.
4. De vuelta a lo básico: Higiene fundamental de datos
A pesar de la evolución del panorama, los fundamentos de la ciberseguridad permanecen inalterados. Verifique siempre que sus repositorios sean privados, evite publicar secretos o tokens en plataformas como GitHub y mitigue riesgos como la confusión de dependencias utilizando repositorios de paquetes oficiales (p. ej., PyPi, NPM) para paquetes privados. En esencia, proteja su información privada y su código manteniéndolos dentro de los límites de la organización.
Si desea saber si su organización se vio afectada, comuníquese con research@lasso.security.