Investigadores de ciberseguridad han descubierto código vulnerable en paquetes de Python más antiguos que potencialmente podrían allanar el camino para que la cadena de suministro del índice de paquetes de Python (PyPI) se vea comprometida mediante un ataque de adquisición de dominio.
La empresa de seguridad de la cadena de suministro de software, ReversingLabs, dijo que encontró la “vulnerabilidad” en los archivos de arranque proporcionados por una herramienta de automatización de compilación e implementación llamada “zc.buildout”.
“Los scripts automatizan el proceso de descarga, construcción e instalación de las bibliotecas y herramientas necesarias”, dijo el investigador de seguridad Vladimir Pezo. “Específicamente, cuando se ejecuta el script de arranque, busca y ejecuta un script de instalación para el paquete Distribute de python-distribute(.)org, un dominio heredado que ahora está a la venta en el rango de precios premium mientras se administra para aumentar los ingresos por publicidad”.
Los paquetes PyPI que contienen un script de arranque que accede al dominio en cuestión incluyen tornado, pypiserver, slapos.core, roman, xlutils y testfixtures.

El meollo del problema tiene que ver con un antiguo script de arranque (“bootstrap.py”) que se usó junto con la herramienta zc.buildout para inicializar el entorno de construcción. El script Python también admitía la capacidad de instalar una utilidad de paquete llamada Distribute, una bifurcación de corta duración del proyecto Setuptools, en el entorno local.
Para lograr esto, el script de instalación de Distribute (“distribute_setup.py”) se recupera de python-distribute(.)org, un dominio que ha estado a la venta desde 2014. Al agregar la opción, la idea era indicarle al script de arranque que descargara e instalara el paquete Distribute en lugar del paquete anterior de Setuptools para administrar los huevos y las dependencias para la compilación.
Es importante tener en cuenta que la bifurcación Distribute se creó debido a la falta de desarrollo activo de Setuptools, la principal herramienta de administración de paquetes en ese momento. Sin embargo, las funciones de Distribute se volvieron a integrar en Setuptools en 2013, lo que hizo que Distribute quedara obsoleto.
El problema identificado por ReversingLabs se refiere al hecho de que muchos paquetes continúan incluyendo el script de arranque, que intenta instalar Distribute de forma predeterminada o cuando se especifica la opción de línea de comando (“-d” o “–distribute”). Esto, junto con el hecho de que el dominio en cuestión está disponible, pone a los usuarios en riesgo latente, ya que un atacante podría usar esta configuración como arma para entregar código malicioso si el script de arranque se ejecuta accidentalmente y potencialmente robar datos confidenciales.
Si bien algunos de los paquetes afectados han tomado medidas para eliminar el script de arranque, el paquete slapos.core continúa entregando el código vulnerable. También está incluido en la versión de desarrollo y mantenimiento de Tornado.
Otro aspecto importante a considerar aquí es que el script de arranque no se ejecuta automáticamente durante la instalación del paquete y está escrito en Python 2. Esto significa que el script no se puede ejecutar con Python 3 sin modificaciones. Pero la mera existencia del archivo deja una “superficie de ataque innecesaria” que los atacantes pueden explotar engañando a los desarrolladores para que ejecuten código que activa la ejecución del script de arranque.
El riesgo de una adquisición de dominio no es teórico. En 2023, salió a la luz que el paquete npm fsevents fue comprometido por un actor malicioso que tomó el control de un recurso en la nube no reclamado alojado en fsevents-binaries.s3-us-west-2.amazonaws(.)com para entregar ejecutables maliciosos a los usuarios que instalaron ciertas versiones del paquete (CVE-2023-45311, puntuación CVSS: 9,8).

“El problema radica en el patrón de programación que implica obtener y ejecutar una carga útil desde un dominio codificado, un patrón comúnmente observado en el malware que muestra un comportamiento de descarga”, dijo Pezo. “El hecho de no desmantelar oficialmente el módulo Distribute provocó que se dejaran scripts de arranque vulnerables y se expusiera un número desconocido de proyectos a un posible ataque”.
La divulgación se produjo cuando HelixGuard descubrió un paquete malicioso llamado “correctores ortográficos” en PyPI, que pretende ser una herramienta de corrección ortográfica que utiliza OpenAI Vision, pero contiene código malicioso diseñado para conectarse a un servidor externo y descargar una carga útil de la siguiente etapa, que luego ejecuta un troyano de acceso remoto (RAT).
El paquete, subido por primera vez a PyPI el 15 de noviembre de 2025 por un usuario llamado leo636722, se descargó 955 veces. Ya no está disponible para descargar.
“Esta RAT puede recibir comandos remotos y ejecutar código Python controlado por el atacante a través de exec(), lo que permite un control remoto completo del host de la víctima”, dijo HelixGuard. “Cuando el usuario instala y ejecuta el paquete malicioso, la puerta trasera se activa, lo que permite al atacante controlar de forma remota la computadora del usuario”.