El ingeniero de seguridad
John Stawinski IV ha escrito un proyecto
en el que él y Adnan Khan llevaron a cabo un ataque a la cadena de suministro
de la popular infraestructura del marco de aprendizaje profundo PyTorch,
aunque afortunadamente con buenas intenciones.
Según el ingeniero, el popular marco de código abierto de Meta, PyTorch,
utiliza los llamados ejecutores autohospedado en su repositorio GitHub. Esto no está en consonancia con las mejores
prácticas y puede generar vulnerabilidades que tienen importantes
implicaciones para la cadena de suministro.
Según el investigador, la principal vulnerabilidad para esto está en los
corredores autohospedados que se utilizaron. Los corredores son máquinas
virtuales que ejecutan procesos en GitHub Actions. A menudo se utilizan como
parte de procesos de CI/CD.
En el último caso, un ejemplo de exploit puede ser robar secretos del
código alojado en GitHub para que la versión de lanzamiento pueda verse
comprometida. También es posible cargar versiones maliciosas de PyTorch en
GitHub, o cargar versiones en AWS, agregar código a la rama del repositorio
principal o dependencias de PyTorch de puerta trasera.
La mayoría de estos corredores están alojados en el propio GitHub y se
descartan y eliminan después de su uso. Los corredores autohospedados se
ejecutan fuera de la plataforma GitHub y son más flexibles. Se pueden
personalizar según lo deseen los usuarios. A diferencia de los ejecutores de
GitHub, cada manejo no requiere una instancia limpia y la misma instancia se
puede reutilizar para diferentes tareas.
Escribe Stawinski a modo de introducción al proyecto.
«Hace cuatro meses, Adnan Khan y yo explotamos una vulnerabilidad crítica
de CI/CD [Integración continua/Entrega continua] en PyTorch, una de las
plataformas de ML [Aprendizaje automático] líderes en el mundo. Utilizada
por titanes como Google, Meta, Boeing y Lockheed. Martin, PyTorch es un
objetivo importante tanto para los hackers como para los estados-nación.
Afortunadamente, explotamos esta vulnerabilidad antes que los malos».
El ataque en cuestión se lleva a cabo a través de la plataforma de
colaboración y alojamiento de código GitHub de Microsoft, aprovechando GitHub
Actions, un sistema para automatizar la compilación, las pruebas e incluso el
lanzamiento de software, y que permite la ejecución de código proporcionado
por el usuario durante ese proceso. Este código puede ser parte de la
plataforma alojada de GitHub o lo que se conoce como un «ejecutor
autohospedado», que trae consigo advertencias sobre seguridad que los
desarrolladores suelen ignorar, dice Stawinski.
«No ayuda que algunas de las configuraciones predeterminadas de GitHub no
sean tan seguras», señala Stawinski.
«De forma predeterminada, cuando un ejecutor autohospedado se adjunta a un
repositorio, cualquiera de los flujos de trabajo de ese repositorio puede
usar ese ejecutor. Esta configuración también se aplica a los flujos de
trabajo de solicitudes de extracción de bifurcación. Recuerde que cualquiera
puede enviar una solicitud de extracción de bifurcación a un GitHub público.
repositorio. Sí, incluso usted. El resultado de esta configuración es que,
de forma predeterminada, cualquier colaborador del repositorio puede
ejecutar código en el ejecutor autohospedado enviando un PR malicioso».
Al analizar el repositorio de PyTorch utilizando la herramienta Gata de
Praetorian, Stawinski y Khan encontraron varios corredores autohospedados
potencialmente vulnerables, y algunos con acceso a secretos, incluidas las
claves de acceso de Amazon Web Services (AWS) y los tokens de acceso personal
(PAT) de GitHub. Al enviar una simple solicitud de extracción para corregir un
error tipográfico en la documentación, la pareja se convirtió en
«contribuyentes» y creó un flujo de trabajo que les dio acceso completo a los
corredores, que luego se utilizaron para obtener los secretos supuestamente
protegidos, incluidos los PAT de GitHub.
Utilizando el token [GitHub] se puede cargar un activo que afirma ser un
binario PyTorch precompilado y listo para usar y agregar una nota de la
versión con instrucciones para ejecutar y descargar el binario. Cualquier
usuario que descargado el binario entonces estaría ejecutando el código
modificado. Si los activos del código fuente actual no estuvieran fijados en
la confirmación de lanzamiento, el atacante podría sobrescribir esos activos
directamente.
«Si las versiones del repositorio de PyTorch con puertas traseras suenan
divertidas, bueno, eso es sólo una fracción del impacto que logramos cuando
analizamos los secretos del repositorio». Estos secretos, señala Stawinski, desbloquearon el acceso a más de 90
repositorios de PyTorch, así como a los sistemas en la nube de Amazon Web
Services (AWS) del proyecto.
El proceso les valió a la pareja un pago de recompensa por errores de U$S5.000
de parte de Facebook. Meta, matriz, más un bono del diez por ciento como
disculpa por los retrasos.
El
artículo completo de Stawinski
está disponible en su sitio web.
Los comentarios están cerrados.