La infraestructura de PyTorch fue comprometida
Hace poco se dieron a conocer los detalles sobre un ataque que sufrió la infraestructura utilizada en el desarrollo del marco de aprendizaje automático PyTorch. Dentro de los detalles técnicos revelados, se menciona que el atacante logró extraer claves de acceso que le permitieron colocar datos arbitrarios en el repositorio de GitHub y AWS, reemplazar código en la rama principal del repositorio y agregar un backdoor a través de dependencias.
Este incidente plantea riesgos significativos, ya que la suplantación de versiones de PyTorch podría ser utilizada para atacar a grandes empresas como Google, Meta, Boeing y Lockheed Martin, que utilizan PyTorch en sus proyectos.
Hace cuatro meses, Adnan Khan y yo explotamos una vulnerabilidad crítica de CI/CD en PyTorch , una de las plataformas de aprendizaje automático líderes en el mundo. Utilizado por titanes como Google, Meta, Boeing y Lockheed Martin , PyTorch es un objetivo importante tanto para los piratas informáticos como para los estados-nación.
Afortunadamente, aprovechamos esta vulnerabilidad antes que los malos.
Así es como lo hicimos.
Sobre el ataque, se menciona que este se reduce a la capacidad de ejecutar código en servidores de integración continua que realizan reconstrucciones y ejecutan trabajos para probar nuevos cambios enviados al repositorio. El problema afecta a proyectos que utilizan controladores externos «Self-Hosted Runner» con GitHub Actions. A diferencia de las GitHub Actions tradicionales, los controladores autohospedados no se ejecutan en la infraestructura de GitHub, sino en sus propios servidores o en máquinas virtuales mantenidas por los desarrolladores.
La ejecución de tareas de compilación en sus servidores permite organizar el lanzamiento de código que puede escanear la red interna de una empresa, buscar en el FS local claves de cifrado y tokens de acceso, y analizar variables ambientales con parámetros para acceder a almacenamiento externo o servicios en la nube y con ello que a través de estos controladores, el atacante pudo ejecutar tareas de compilación en servidores propios, lo que permitió escanear la red interna de una empresa para buscar claves de cifrado y tokens de acceso.
En PyTorch y otros proyectos que utilizan Self-Hosted Runner, los desarrolladores pueden ejecutar trabajos de compilación solo después de que sus cambios hayan sido revisados. Sin embargo, el atacante logró eludir este sistema enviando primero un cambio menor y luego, una vez aceptado, obtenía automáticamente el estado de «colaborador» que permitía ejecutar código en cualquier entorno de GitHub Actions Runner asociado con el repositorio o la organización supervisora. Durante el ataque, se interceptaron claves de acceso de GitHub y claves de AWS, lo que permitió al atacante comprometer la infraestructura.
El enlace al estado de «colaborador» resultó ser fácil de eludir: basta con enviar primero un cambio menor y esperar a que se acepte en la base del código, después de lo cual el desarrollador recibe automáticamente el estado de participante activo. cuyas solicitudes de extracción pueden probarse en la infraestructura de CI sin una verificación por separado. Para lograr el estado de desarrollador activo, el experimento incluyó cambios cosméticos menores para corregir errores tipográficos en la documentación. Para obtener acceso al repositorio y almacenamiento de las versiones de PyTorch, durante un ataque al ejecutar código en el «Self-Hosted Runner», se interceptó el token de GitHub utilizado para acceder al repositorio desde los procesos de compilación (GITHUB_TOKEN permitía acceso de escritura), así como las claves de AWS involucradas para guardar los resultados de la compilación.
Como tal, se menciona que este problema no es específico de PyTorch y afecta a otros proyectos grandes que utilizan configuraciones predeterminadas para «Self-Hosted Runner» en GitHub Actions.
Además de ello, se ha mencionado la posibilidad de ataques similares en proyectos de criptomonedas, blockchain, Microsoft Deepspeed, TensorFlow y otros, con consecuencias potencialmente graves. Los investigadores han presentado más de 20 solicitudes en programas de recompensas por errores, buscando recompensas por valor de varios cientos de miles de dólares.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.