PyPI detuvo nuevos usuarios y proyectos mientras defendía el ataque a la cadena de suministro

PyPI detuvo nuevos usuarios y proyectos mientras defendía el ataque a la cadena de suministro
Los ataques a la cadena de suministro, como el último descubrimiento de PyPI, insertan código malicioso en paquetes de software aparentemente funcionales utilizados por los desarrolladores.  Se están volviendo cada vez más comunes.
Agrandar / Los ataques a la cadena de suministro, como el último descubrimiento de PyPI, insertan código malicioso en paquetes de software aparentemente funcionales utilizados por los desarrolladores. Se están volviendo cada vez más comunes.

imágenes falsas

PyPI, un repositorio vital para los desarrolladores de código abierto, detuvo temporalmente la creación de nuevos proyectos y el registro de nuevos usuarios luego de una avalancha de cargas de paquetes que ejecutaban código malicioso en cualquier dispositivo que los instalara. Diez horas más tarde levantó la suspensión.

PyPI, abreviatura de Python Package Index, es la fuente de referencia para aplicaciones y bibliotecas de códigos escritas en el lenguaje de programación Python. Tanto las corporaciones Fortune 500 como los desarrolladores independientes confían en el repositorio para obtener las últimas versiones del código necesarias para ejecutar sus proyectos. Poco después de las 7 p.m. PT del miércoles, el sitio comenzó a mostrar un mensaje publicitario que informaba a los visitantes que el sitio estaba suspendiendo temporalmente la creación de nuevos proyectos y el registro de nuevos usuarios. El mensaje no explicaba por qué ni proporcionaba una estimación de cuándo se levantaría la suspensión.

Captura de pantalla que muestra la notificación de suspensión temporal.
Agrandar / Captura de pantalla que muestra la notificación de suspensión temporal.

jaquemarx

Aproximadamente 10 horas después, PyPI restableció la creación de nuevos proyectos y el registro de nuevos usuarios. Una vez más, el sitio no proporcionó ningún motivo para la suspensión de 10 horas.

Según la firma de seguridad Checkmarx, en las horas previas al cierre, PyPI fue atacado por usuarios que probablemente utilizaron medios automatizados para cargar paquetes maliciosos que, cuando se ejecutaban, infectaban los dispositivos de los usuarios. Los atacantes utilizaron una técnica conocida como typosquatting, que aprovecha los errores tipográficos que cometen los usuarios al ingresar los nombres de paquetes populares en las interfaces de línea de comandos. Al dar a los paquetes maliciosos nombres similares a los paquetes benignos populares, los atacantes cuentan con que sus paquetes maliciosos se instalen cuando alguien ingresa por error el nombre incorrecto.

“Los actores de amenazas apuntan a las víctimas con la técnica de ataque Typosquatting utilizando su CLI para instalar paquetes de Python”, los investigadores de Checkmarx Yehuda Gelb, Jossef Harush Kadouri y Tzachi Zornstain. escribió el jueves. “Este es un ataque de varias etapas y la carga útil maliciosa tenía como objetivo robar billeteras criptográficas, datos confidenciales de los navegadores (cookies, datos de extensiones, etc.) y varias credenciales. Además, la carga maliciosa empleó un mecanismo de persistencia para sobrevivir a los reinicios”.

Captura de pantalla que muestra algunos de los paquetes maliciosos encontrados por Checkmarx.
Agrandar / Captura de pantalla que muestra algunos de los paquetes maliciosos encontrados por Checkmarx.

jaquemarx

La publicación decía que los paquetes maliciosos “probablemente fueron creados mediante automatización”, pero no daba más detalles. Los intentos de contactar a los funcionarios de PyPI para hacer comentarios no tuvieron éxito de inmediato. Los nombres de los paquetes imitado los de paquetes y bibliotecas populares como Peticiones, Almohaday Colorama.

La suspensión temporal es sólo el último evento que resalta las crecientes amenazas que enfrenta el ecosistema de desarrollo de software. El mes pasado, los investigadores revelaron un ataque al repositorio de código fuente abierto GitHub que estaba inundando el sitio con millones de paquetes que contenían código ofuscado que robaba contraseñas y criptomonedas de los dispositivos de los desarrolladores. Los paquetes maliciosos eran clones de los legítimos, lo que los hacía difíciles de distinguir para el ojo casual.

La parte responsable automatizó un proceso que bifurcaba paquetes legítimos, lo que significa que el código fuente se copió para que los desarrolladores pudieran usarlo en un proyecto independiente basado en el original. El resultado fueron millones de bifurcaciones con nombres idénticos a los originales. Dentro del código idéntico había una carga útil maliciosa envuelta en múltiples capas de ofuscación. Si bien GitHub pudo eliminar la mayoría de los paquetes maliciosos rápidamente, la compañía no pudo filtrarlos todos, dejando al sitio en un bucle persistente de whack-a-mole.

Ataques similares son una realidad para prácticamente todos los repositorios de código abierto, incluidos npm pack picks y RubyGems.

A principios de esta semana, Checkmarx informó un ataque separado a la cadena de suministro que también estaba dirigido a los desarrolladores de Python. Los actores de ese ataque clonaron la herramienta Colorama, ocultaron código malicioso en su interior y lo pusieron a disposición para su descarga en un sitio espejo falso con un dominio tipográfico que imitaba el legítimo files.pythonhosted.org. Los atacantes secuestraron las cuentas de desarrolladores populares, probablemente robando las cookies de autenticación que utilizaban. Luego, utilizaron las cuentas secuestradas para contribuir con confirmaciones maliciosas que incluían instrucciones para descargar el clon malicioso de Colorama. Checkmarx dijo que encontró evidencia de que algunos desarrolladores fueron infectados con éxito.

En la publicación del jueves, los investigadores de Checkmarx informaron:

El código malicioso se encuentra dentro del archivo setup.py de cada paquete, lo que permite la ejecución automática durante la instalación.

Además, la carga útil maliciosa empleaba una técnica en la que el archivo setup.py contenía código ofuscado que se cifraba mediante el módulo de cifrado Fernet. Cuando se instaló el paquete, el código ofuscado se ejecutó automáticamente, lo que desencadenó la carga maliciosa.

jaquemarx

Tras la ejecución, el código malicioso dentro del archivo setup.py intentó recuperar una carga adicional de un servidor remoto. La URL de la carga útil se construyó dinámicamente agregando el nombre del paquete como parámetro de consulta.

Captura de pantalla del código que crea una URL dinámica.
Agrandar / Captura de pantalla del código que crea una URL dinámica.

jaquemarx

La carga útil recuperada también se cifró utilizando el módulo Fernet. Una vez descifrada, la carga útil reveló un extenso ladrón de información diseñado para recolectar información confidencial de la máquina de la víctima.

La carga útil maliciosa también empleó un mecanismo de persistencia para garantizar que permaneciera activa en el sistema comprometido incluso después de la ejecución inicial.

Captura de pantalla que muestra el código que permite la persistencia.
Agrandar / Captura de pantalla que muestra el código que permite la persistencia.

jaquemarx

Además de utilizar typosquatting y una técnica similar conocida como brandjacking para engañar a los desarrolladores para que instalen paquetes maliciosos, los actores de amenazas también emplean confusión de dependencias. La técnica funciona cargando paquetes maliciosos en repositorios de códigos públicos y dándoles un nombre idéntico a un paquete almacenado en el repositorio interno del desarrollador de destino del que dependen una o más aplicaciones del desarrollador para funcionar. Las aplicaciones de administración de software de los desarrolladores a menudo prefieren las bibliotecas de códigos externos a las internas, por lo que descargan y utilizan el paquete malicioso en lugar del confiable. En 2021, un investigador utilizó una técnica similar para ejecutar con éxito códigos falsos en redes de Apple, Microsoft, Tesla y decenas de otras empresas.

No existen formas seguras de protegerse contra tales ataques. En cambio, corresponde a los desarrolladores verificar meticulosamente y volver a verificar los paquetes antes de instalarlos, prestando mucha atención a cada letra de un nombre.

Leave a Reply

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