Más paquetes maliciosos publicados en el repositorio en línea. Esta vez es PyPI

Más paquetes maliciosos publicados en el repositorio en línea.  Esta vez es PyPI
Una calavera estilizada y tibias cruzadas hechas de unos y ceros.

Los investigadores han descubierto otro ataque a la cadena de suministro dirigido a un repositorio de código fuente abierto, lo que demuestra que la técnica, que ha ganado un amplio uso en los últimos años, no desaparecerá pronto.

Esta vez, el repositorio era PyPI, abreviatura de Python Package Index, que es el repositorio de software oficial para el lenguaje de programación Python. A principios de este mes, un colaborador con el nombre de usuario Lolip0p subió tres paquetes a PyPI titulados: colorslib, httpslib y libhttps. El colaborador tuvo cuidado de disfrazar los tres como paquetes legítimos, en este caso, como bibliotecas para crear una interfaz de usuario de terminal y una agrupación de conexiones segura para subprocesos. Los tres paquetes se anunciaron como proveedores de usabilidad con todas las funciones.

Captura de pantalla del paquete PyPI malicioso que se hace pasar por una oferta legítima.
Agrandar / Captura de pantalla del paquete PyPI malicioso que se hace pasar por una oferta legítima.

Investigadores de la firma de seguridad Fortinet dicho los tres paquetes eran maliciosos y el script setup.py para ellos era idéntico. Los archivos abrieron una ventana de Powershell y descargaron un archivo malicioso, llamado Oxzy.exe, que en el momento del descubrimiento solo fue detectado por tres proveedores de antimalware.

Captura de pantalla tomada de VirusTotal que muestra el número de detecciones.
Agrandar / Captura de pantalla tomada de VirusTotal que muestra el número de detecciones.

ReversingLabs

Oxzy.exe, a su vez, descargó un segundo archivo malicioso titulado Update.exe, que fue detectado por solo siete motores antimalware.

El último archivo que se eliminó se denominó SearchProtocolHost.exe, que fue detectado por nueve motores.

Uno de esos motores fue Microsoft Defender. La descripción fue Wacatac.b!ml, una pieza de malware que, según Microsoft, “puede realizar una serie de acciones a elección de un pirata informático malicioso en su PC”. Un análisis de Trend Micro

mostró que el troyano existe desde al menos 2019, cuando se propagaba a través de software pirateado disponible en línea.

Los repositorios de código abierto como PyPI y NPM se utilizan cada vez más como vectores para instalar malware a través de ataques a la cadena de suministro, que propagan software malicioso en la fuente de un proyecto legítimo. De 2018 a 2021, este tipo de ataque creció casi cuatro veces en NPM y casi cinco veces en PyPI, de acuerdo a firma de seguridad ReversingLabs. De enero a octubre del año pasado, se cargaron 1493 paquetes maliciosos en PyPI y 6977 paquetes maliciosos en NPM.

En septiembre pasado, los ataques a la cadena de suministro de PyPI se intensificaron. Un actor de amenazas lanzó un ataque de phishing de credenciales en los contribuyentes de PyPI y, cuando tuvo éxito, utilizó el acceso a cuentas comprometidas para publicar malware que se hizo pasar por la última versión de proyectos legítimos asociados con la cuenta. Proyectos legítimos incluidos exotel y Correo no deseado. A diferencia de los paquetes maliciosos que usaban nombres que parecían similares a proyectos conocidos, estos ataques pudieron envenenar la fuente oficial de un proyecto utilizado durante años. El actor de amenazas detrás de los ataques existe desde al menos 2021.

“Los usuarios finales de Python siempre deben realizar la debida diligencia antes de descargar y ejecutar cualquier paquete, especialmente de los nuevos autores”, escribieron los investigadores de ReversingLabs en la publicación que documenta los últimos ataques. “Y como se puede ver, publicar más de un paquete en un corto período de tiempo no indica que un autor sea confiable”.

El mismo consejo se debe aplicar a NPM, RubyGems y prácticamente todos los demás repositorios de código abierto.

Leave a Reply

Your email address will not be published. Required fields are marked *