PyTorch: kit de herramientas de aprendizaje automático creado desde Navidad hasta Año Nuevo PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

PyTorch: kit de herramientas de aprendizaje automático desarrollado desde Navidad hasta Año Nuevo

PyTorch es uno de los conjuntos de herramientas de aprendizaje automático más populares y ampliamente utilizados que existen.

(No vamos a centrarnos en su ubicación en la tabla de clasificación de inteligencia artificial; como ocurre con muchas herramientas de código abierto ampliamente utilizadas en un campo competitivo, la respuesta parece depender de a quién le pregunte y qué conjunto de herramientas utilice). ellos mismos.)

Originalmente desarrollado y lanzado como un proyecto de código abierto por Facebook, ahora Meta, el software fue entregado a la Fundación Linux a fines de 2022, que ahora lo ejecuta bajo la égida de la Fundación PyTorch.

Desafortunadamente, el proyecto se vio comprometido por medio de un ataque a la cadena de suministro durante la temporada navideña a fines de 2022, entre el día de Navidad [2022-12-25] y el día anterior a la víspera de Año Nuevo [2022-12-30].

Los atacantes crearon malévolamente un paquete de Python llamado torchtriton en PyPI, el popular repositorio de Python Package Index.

Su nombre torchtriton fue elegido para que coincidiera con el nombre de un paquete en el propio sistema PyTorch, lo que lleva a una situación peligrosa explicado por el equipo de PyTorch (nuestro énfasis) de la siguiente manera:

[A] paquete de dependencia malicioso (torchtriton) […] se cargó en el repositorio de código del índice de paquetes de Python (PyPI) con el mismo nombre de paquete que el que enviamos en el índice de paquetes nocturnos de PyTorch. Dado que el índice PyPI tiene prioridad, este paquete malicioso se estaba instalando en lugar de la versión de nuestro repositorio oficial. 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 por defecto.

El programa pip, por cierto, solía ser conocido como pyinstall, y aparentemente es una broma recursiva que es la abreviatura de pip installs packages. A pesar de su nombre original, no es para instalar Python en sí mismo: es la forma estándar para que los usuarios de Python administren bibliotecas de software y aplicaciones escritas en Python, como PyTorch y muchas otras herramientas populares.

Pwned por un truco de la cadena de suministro

Cualquier persona lo suficientemente desafortunada como para instalar la versión pwned de PyTorch durante el período de peligro, casi con certeza terminó con un malware de robo de datos implantado en su computadora.

De acuerdo con el breve pero útil PyTorch análisis del malware, los atacantes robaron algunos, la mayoría o la totalidad de los siguientes datos significativos de los sistemas infectados:

  • Información del sistema, incluido el nombre de host, el nombre de usuario, los usuarios conocidos en el sistema y el contenido de todas las variables de entorno del sistema. Las variables de entorno son una forma de proporcionar datos de entrada solo de memoria a los que los programas pueden acceder cuando se inician, y a menudo incluyen datos que no se deben guardar en el disco, como claves criptográficas y tokens de autenticación que dan acceso a servicios basados ​​en la nube. La lista de usuarios conocidos se extrae de /etc/passwd, que, afortunadamente, en realidad no contiene contraseñas ni hash de contraseñas.
  • Su configuración local de Git. Esto es robado de $HOME/.gitconfigy, por lo general, contiene información útil sobre la configuración personal de cualquiera que use el popular sistema de gestión de código fuente Git.
  • Tus claves SSH. Estos son robados del directorio. $HOME/.ssh. Las claves SSH suelen incluir las claves privadas utilizadas para conectarse de forma segura a través de SSH (shell seguro) o mediante SCP (copia segura) a otros servidores en sus propias redes o en la nube. Muchos desarrolladores mantienen al menos algunas de sus claves privadas sin cifrar, de modo que los scripts y las herramientas de software que utilizan puedan conectarse automáticamente a sistemas remotos sin detenerse para solicitar una contraseña o una clave de seguridad de hardware cada vez.
  • Los primeros 1000 otros archivos en su directorio de inicio tienen menos de 100 kilobytes de tamaño. La descripción del malware PyTorch no dice cómo se calcula la "primera lista de 1000 archivos". El contenido y orden de las listas de archivos depende de si la lista está ordenada alfabéticamente; si los subdirectorios se visitan antes, durante o después de procesar los archivos en cualquier directorio; si se incluyen archivos ocultos; y si se usa alguna aleatoriedad en el código que recorre los directorios. Probablemente debería asumir que cualquier archivo por debajo del umbral de tamaño podría ser el que termine siendo robado.

En este punto, mencionaremos las buenas noticias: solo aquellos que obtuvieron la llamada versión "nocturna" o experimental del software estaban en riesgo. (El nombre "nightly" proviene del hecho de que es la versión más reciente, que generalmente se crea automáticamente al final de cada día laboral).

La mayoría de los usuarios de PyTorch probablemente seguirán la llamada versión “estable”, que no se vio afectada por este ataque.

Además, del informe de PyTorch, parece que el archivo ejecutable del malware Triton se dirigió específicamente a entornos Linux de 64 bits.

Por lo tanto, asumimos que este programa malicioso solo se ejecutaría en computadoras con Windows si se instalara el Subsistema de Windows para Linux (WSL).

No olvide, sin embargo, que las personas con más probabilidades de instalar "nightlies" regulares incluyen desarrolladores de PyTorch en sí o de aplicaciones que lo usan, tal vez incluidos sus propios desarrolladores internos, que pueden tener acceso basado en clave privada a compilación corporativa. , servidores de prueba y producción.

Robo de datos DNS

Curiosamente, el malware Triton no extrae sus datos (el término de la jerga militarista que a la industria de la ciberseguridad le gusta usar en lugar de robar or copiar ilegalmente) utilizando HTTP, HTTPS, SSH o cualquier otro protocolo de alto nivel.

En cambio, cifra y codifica los datos que quiere robar en una secuencia de lo que parecen "nombres de servidor" que pertenecen a un nombre de dominio controlado por los delincuentes.

Esto significa que, al realizar una secuencia de búsquedas de DNS, los delincuentes pueden extraer una pequeña cantidad de datos en cada solicitud falsa.

Este es el mismo tipo de truco que fue usado por piratas informáticos Log4Shell a fines de 2021, quien filtró claves de cifrado al realizar búsquedas de DNS para "servidores" con "nombres" que resultaron ser el valor de su clave de acceso secreta de AWS, saqueada de una variable de entorno en memoria.

Entonces, lo que parecía una búsqueda de DNS inocente, aunque sin sentido, para un "servidor" como S3CR3TPA55W0RD.DODGY.EXAMPLE filtraría silenciosamente su clave de acceso con el pretexto de una simple búsqueda que dirigía al servidor DNS oficial enumerado para el DODGY.EXAMPLE dominio.


DEMO EN VIVO DE LOG4SHELL QUE EXPLICA LA EXFILTRACIÓN DE DATOS A TRAVÉS DE DNS

[Contenido incrustado]

Si no puede leer el texto claramente aquí, intente usar el modo de pantalla completa, o ver directamente en Youtube.
Haga clic en el engranaje del reproductor de video para acelerar la reproducción o activar los subtítulos.


Si los ladrones son dueños del dominio DODGY.EXAMPLE, pueden decirle al mundo a qué servidor DNS conectarse cuando realizan esas búsquedas.

Más importante aún, incluso las redes que filtran estrictamente las conexiones de red basadas en TCP mediante HTTP, SSH y otros protocolos de intercambio de datos de alto nivel...

…a veces no filtra en absoluto las conexiones de red basadas en UDP que se utilizan para las búsquedas de DNS.

El único inconveniente para los delincuentes es que las solicitudes de DNS tienen un tamaño bastante limitado.

Los nombres de servidores individuales están limitados a 64 caracteres de un conjunto de 37 (AZ, 0-9 y el símbolo de guión o guión), y muchas redes limitan los paquetes DNS individuales, incluidas todas las solicitudes, encabezados y metadatos adjuntos, a solo 512 bytes cada uno.

Suponemos que es por eso que el malware en este caso comenzó persiguiendo sus claves privadas y luego se restringió a un máximo de 1000 archivos, cada uno de menos de 100,000 XNUMX bytes.

De esa forma, los delincuentes roban una gran cantidad de datos privados, en particular, incluidas las claves de acceso al servidor, sin generar una cantidad inmanejable de búsquedas de DNS.

Un número inusualmente grande de errores de DNS podría pasar a ser detectado por razones operativas rutinarias, incluso en ausencia de un escrutinio aplicado específicamente con fines de ciberseguridad.

¿Qué hacer?

PyTorch ya tomó medidas para cerrar este ataque, por lo que si aún no ha sido atacado, es casi seguro que no lo será ahora, porque el malicioso torchtriton El paquete en PyPI ha sido reemplazado por un paquete vacío deliberadamente "falso" del mismo nombre.

Esto significa que cualquier persona, o cualquier software, que intentó instalar torchtriton de PyPI después de 2022-12-30T08:38:06Z, ya sea por accidente o por diseño, no recibiría el malware.

El paquete PyPI falso después de la intervención de PyTorch.

PyTorch ha publicado una lista útil de IoC, o indicadores de compromiso, que puede buscar en su red.

Recuerde, como mencionamos anteriormente, que incluso si casi todos sus usuarios se adhieren a la versión "estable", que no se vio afectada por este ataque, es posible que tenga desarrolladores o entusiastas que experimenten con "nightlies", incluso si usan la versión estable. liberar también.

Según PyTorch:

  • El malware se instala con el nombre de archivo triton. Por defecto, esperaría encontrarlo en el subdirectorio triton/runtime en el directorio de paquetes de su sitio de Python. Sin embargo, dado que los nombres de archivo por sí solos son indicadores débiles de malware, trate la presencia de este archivo como evidencia de peligro; no trate su ausencia como un claro.
  • El malware en este ataque en particular tiene la suma SHA256 2385b294­89cd9e35­f92c0727­80f903ae­2e517ed4­22eae672­46ae50a5cc738a0e. Una vez más, el malware podría volver a compilarse fácilmente para producir una suma de comprobación diferente, por lo que la ausencia de este archivo no es un signo de salud definitivo, pero puede tratar su presencia como un signo de infección.
  • Las búsquedas de DNS utilizadas para robar datos terminaron con el nombre de dominio H4CK.CFD. Si tiene registros de red que registran búsquedas de DNS por nombre, puede buscar esta cadena de texto como evidencia de que se filtraron datos secretos.
  • Aparentemente, las respuestas DNS maliciosas fueron a, y las respuestas, si las hubo, provinieron de un servidor DNS llamado WHEEZY.IO. Por el momento, no podemos encontrar ningún número de IP asociado con ese servicio, y PyTorch no ha proporcionado ningún dato de IP que vincule el tráfico de DNS con este malware, por lo que no estamos seguros de qué utilidad tiene esta información para la búsqueda de amenazas. en este momento [2023-01-01T21:05:00Z].

Afortunadamente, suponemos que la mayoría de los usuarios de PyTorch no se habrán visto afectados por esto, ya sea porque no usan compilaciones nocturnas, o porque no trabajaron durante el período de vacaciones, o por ambas cosas.

Pero si usted es un entusiasta de PyTorch que juega con las compilaciones nocturnas y ha estado trabajando durante las vacaciones, incluso si no puede encontrar ninguna evidencia clara de que estuvo comprometido...

…sin embargo, es posible que desee considerar generar nuevos pares de claves SSH como medida de precaución y actualizar las claves públicas que ha cargado en los diversos servidores a los que accede a través de SSH.

Si sospecha que se vio comprometido, por supuesto, no posponga las actualizaciones de la clave SSH; si aún no las ha hecho, ¡hágalas ahora mismo!


Sello de tiempo:

Mas de Seguridad desnuda