Ciberseguridad

PyTorch sufre un ataque a la cadena de suministro

Un paquete malicioso en el marco de aprendizaje automático permitió al atacante filtrar datos, incluidas las claves SSH.

generica

Los usuarios que implementaron las compilaciones nocturnas de PyTorch en los últimos días han recibido dentro de su instalación, probablemente, un paquete malicioso que ha podido extraer datos confidenciales de sus sistemas. El incidente fue el resultado de un ataque llamado confusión de dependencias que sigue afectando a los administradores de pauetes y los entornos de desarrollo si no se toman medidas de refuerzo. “Si instaló PyTorch nightly en Linux entre el 25 y el 30 de diciembre de 2022, desinstálelo inmediatamente”, explicaron los desarrolladores de PyTorch en un aviso de seguridad.

PyTorch es un marco para desarrollar aplicaciones de aprendizaje automático en los campos de visión por computación y en procesamiento de lenguaje natural, que es una continuación de la biblioteca Torch más antigua y que ya no se mantiene. PyTorch fue desarrollado originalmente por Meta AI, el laboratorio de inteligencia artificial (IA) de Meta, pero ahora es un proyecto de código abierto mantenido por la Fundación Pytorch bajo el paraguas de la Fundación Linux.

Al igual que la mayoría de los programas de Python, PyTorch se puede instalar a través de pip, una herramienta de administración de paquetes e instalador que utiliza el Pypi (Python Package Index) público como su repositorio principal. Sin embargo, como la mayoría de las herramientas de gestión de paquetes, pip permite a los usuarios definir repositorios adicionales, una función que las organizaciones suelen utilizar para alojar componentes desarrollados internamente que se utilizan en sus aplicaciones y no están destinados al lanzamiento público.

La cadena de dependencia de PyTorch (paquetes adicionales que se descargan durante su instalación) incluye una biblioteca llamada torchtriton que se alojó en el propio índice de PyTorch para compilaciones nocturnas. Hasta el 25 de diciembre, no había una biblioteca de torchtriton en PyPi, por lo que pip la buscó en el repositorio alternativo de PyTorch.

Sin embargo, un atacante decidió registrar el nombre del paquete torchtriton en PyPi y cargar un paquete malicioso, que a su vez engañó a la rutina de instalación de las compilaciones nocturnas de PyTorch para descargar la versión no autorizada de PyPi. Las compilaciones estables no se vieron afectadas.

"Dado que el índice PyPI tiene prioridad, este paquete malicioso se instaló en lugar de la versión de nuestro repositorio oficial", dijeron los mantenedores de PyTorch. "Este diseño permite que alguien registre un paquete con el mismo nombre que uno que existe en un índice de terceros, y pip instalará su versión de manera predeterminada".

El paquete malicioso torchtriton fue diseñado para recopilar información sobre el sistema, como servidores de nombres usados, nombre de host de la computadora, nombre de usuario actual, directorio de trabajo y variables de entorno. También lee el contenido de /etc/hosts (hosts definidos internamente), /etc/passwd (lista de usuarios locales), archivos en el directorio de inicio del usuario, directorio .gitconfig y directorio .ssh que incluye claves SSH. Luego, toda esta información se cargó en un servidor remoto a través de consultas de DNS encriptadas, una forma sigilosa de filtrar datos.

Los mantenedores de PyTorch publicaron un comando que los administradores pueden usar para escanear sus sistemas en busca de la versión maliciosa de torchtriton. Si se encuentra el paquete no autorizado, se debe eliminar de inmediato y se deben tomar otras medidas para cambiar cualquier credencial o clave potencialmente comprometida.

PyTorch eliminó su dependencia de torchtriton y la reemplazó con pytorch-triton, una versión renombrada del paquete anterior. Si bien este paquete todavía se sirve desde su propio índice, los mantenedores del proyecto también registraron el nombre pytorch-triton en PyPi para que no pueda ocurrir un secuestro similar en el futuro.

Todas las compilaciones de PyTorch con una dependencia de torchtriton se eliminaron de la distribución y, mientras tanto, el paquete de torchtriton se eliminó de PyPi. Sin embargo, según el seguimiento automatizado realizado por la seguridad de la cadena de suministro Snyk, el paquete erróneo de torchtriton se descargó 2717 veces; solo el 26 de diciembre se produjeron 2500 descargas. Esto indica cuántos sistemas se vieron potencialmente afectados.

Además, la descripción del paquete torchtriton en PyPi fue: "Este no es el paquete torchtriton real, pero se cargó aquí para descubrir vulnerabilidades de confusión de dependencia". El dominio donde se exfiltraron los datos tiene un aviso que dice: "Hola, si se topó con esto en sus registros, probablemente se deba a que su Python estaba mal configurado y era vulnerable a un ataque de confusión de dependencia. Para identificar las empresas que son vulnerables, el script me envía los metadatos sobre el host (como su nombre de host y el directorio de trabajo actual). Después de identificar quién es vulnerable e informar el hallazgo, se eliminarán todos los metadatos sobre su servidor".

Si bien esto sugiere que el paquete malicioso posiblemente fue la creación de un cazador de errores que buscaba probar una vulnerabilidad, la extracción de archivos del directorio de inicio, claves SSH y configuraciones de Git de los sistemas es un comportamiento sospechoso.



TE PUEDE INTERESAR...

Accede a la cobertura de nuestros encuentros
 
Lee aquí nuestra revista digital de canal

DealerWorld Digital

 

Forma parte de nuestra comunidad
 
¿Interesado en nuestros foros? 

 

Whitepaper