Descubren paquete malicioso en Python
Descubren paquete malicioso en Python

¡Peligro! Este paquete de Python es malicioso, desinstálalo ya

¡Paquete malicioso detectado en Python!

¡Paquete malicioso detectado en Python!

Si eres un desarrollador de Python que suele instalar las últimas versiones preliminares de bibliotecas, es importante que tomes medidas de inmediato. PyTorch, un marco de aprendizaje automático de código abierto desarrollado inicialmente por Meta y ahora bajo la Fundación Linux, ha sido víctima de un ataque a la cadena de suministro.

Esto podría haber llevado a muchos usuarios a instalar un paquete malicioso sin darse cuenta. Si has instalado PyTorch recientemente, es crucial que tomes medidas para protegerte.

Descubren paquete malicioso en Python
Descubren paquete malicioso en Python

¡Elimina PyTorch de Python ya!

En resumen, PyTorch-nightly depende de una biblioteca llamada «torchtriton«. Aunque la versión de esta biblioteca alojada en el índice de paquetes nocturnos de PyTorch no es maliciosa, durante las vacaciones se subió un paquete problemático con el mismo nombre al repositorio del Índice de paquetes de Python (PyPI).

Si has instalado recientemente PyTorch-nightly, es importante que tomes medidas para protegerte.

Los desarrolladores de Python suelen usar el comando «pip» para instalar bibliotecas, lo cual da prioridad al repositorio de PyPI. Esto significa que, en el lugar del binario seguro de PyTorch, los usuarios acababan de instalar un binario malicioso.

Afortunadamente, es poco probable que este ataque de confusión de dependencias haya afectado a la comunidad de desarrolladores de Python en general. Esto se debe a que solo ha afectado a los usuarios de PyTorch-nightly que instalaron el paquete en Linux entre el 25 y el 30 de diciembre. Los usuarios de paquetes estables no han sido afectados.

Tras el descubrimiento del paquete malicioso torchtriton, el equipo de desarrollo de PyTorch publicó una divulgación y decidió cambiar el nombre del paquete a «pytorch-torchtriton» para registrarlo como un paquete ficticio en PyPI, con la intención de prevenir ataques similares en el futuro.

Los paquetes nocturnos usando el nombre anterior se han eliminado por ahora; se ha contactado con PyPI para obtener la propiedad del nombre «torchtriton» y erradicar la versión maliciosa.

Una investigación realizada por PyTorch ha descubierto que el paquete malicioso torchtriton enviaba datos del sistema desde la computadora del usuario a un dominio recientemente registrado. Los detalles se describen a continuación:

  • Obtener información del sistema
    • servidores de nombres de /etc/resolv.conf
    • nombre de host de gethostname()
    • nombre de usuario actual de getlogin()
    • nombre del directorio de trabajo actual de getcwd()
    • Variables de entorno
  • Lea los siguientes archivos
    • /etc/hosts
    • /etc/contraseña
    • Los primeros 1000 archivos en $HOME/*
    • $INICIO/.gitconfig
    • $INICIO/.ssh/*
  • Cargue toda esta información, incluido el contenido de los archivos, a través de consultas DNS encriptadas al dominio *.h4ck[.]cfd, usando el servidor DNS wheezy[.]io

De acuerdo con lo informado por Bleeping Computer, el propietario del paquete malicioso torchtriton y el dominio donde se enviaban los datos del usuario defendieron sus acciones como parte de una investigación ética. Afirmaron que:

Oye, soy yo quien reclamó el paquete torchtriton en PyPi. ¡Tenga en cuenta que esto no tenía la intención de ser malicioso!

Entiendo que podría haber hecho un mejor trabajo para no enviar todos los datos del usuario. La razón por la que envié más metadatos es que, en el pasado, cuando investigaba problemas de confusión de dependencias, en muchos casos no era posible identificar a las víctimas por su nombre de host, nombre de usuario y CWD. Esa es la razón por la que esta vez decidí enviar más datos, pero mirando hacia atrás, fue una decisión equivocada y debería haber sido más cuidadoso.

Acepto la culpa y pido disculpas. Al mismo tiempo quiero asegurar que no fue mi intención robar los secretos de nadie. Ya reporté esta vulnerabilidad a Facebook el 29 de diciembre (casi tres días antes del anuncio) luego de haber verificado que la vulnerabilidad efectivamente existe. También hice numerosos informes a otras empresas que se vieron afectadas a través de sus programas HackerOne. Si mis intenciones hubieran sido maliciosas, nunca habría llenado ningún informe de recompensas por errores y simplemente habría vendido los datos al mejor postor.

Una vez más, me disculpo por causar interrupciones, aseguro que todos los datos que recibí han sido eliminados.

Por cierto, en mi informe de error a Facebook ya les ofrecí transferirles el paquete PyPi, pero hasta ahora no he recibido ninguna respuesta de ellos.

Los desarrolladores que instalaron PyTorch Nightly entre el 25 y el 30 de diciembre del año pasado deben verificar dos veces sus sistemas y ejecutar los siguientes comandos a través de pip:

  • $ pip3 uninstall -y torch torchvision torchaudio torchtriton
  • $ pip3 cache purge

Del mismo modo, también es recomendable cambiar a PyTorch estable por ahora o actualizar a un paquete que haya sido distribuido después del 30 de diciembre.