Un ingeniero de seguridad de software ha identificado 12 bibliotecas subidas al sitio oficial de Python (Python Package Index o PyPI), que contiene código que bien podría ser malicioso. Los 12 paquetes se descubrieron en dos escaneos por separado hechos por un ingeniero de seguridad. Todos los paquetes se pusieron juntos y trabajan usando patrones similares. Sus creadores copiaron el código de paquetes populares y crearon una biblioteca nueva, pero con un nombre modificado ligeramente. Por ejemplo, cuatro paquetes: diango, djago, dajngo, djanga, son las versiones maliciosas de Django, el nombre de un entorno muy popular para Python.
Quienes están detrás de estos paquetes añadieron código malicioso a estas nuevas versiones, haciendo que sean totalmente funcionales y más aún, específicamente usando los archivos setup.py. Estos archivos contienen un conjunto de instrucciones que usan los instaladores de las bibliotecas de Python, como “pip”, que se ejecutan automáticamente cuando se descargan y ponen un nuevo paquete en el proyecto que se esté usando en Python.
La naturaleza del código extra de estos paquetes permitía operaciones maliciosas en variadas situaciones. El ingeniero de seguridad, cuyo nombre clave es Berthus, descubrió un primer paquete de 11 paquetes maliciosos el 13 de octubre y otro paquete malicioso el 21 de octubre. El primer conjunto de bibliotecas maliciosas buscaría recolectar datos sobre cada entorno infectado, obteniendo persistencia en el boot (arranque), o bien, la posibilidad de abrir un shell en una estación remota.
Aparentemente la docena de paquetes, a los cuales se les ha bautizado como “colourama”, se escribieron bajo algún tipo de motivación financiera e infectaba el clipboard del sistema operativo del usuario, donde podría buscar escanear cada medio segundo una cadena que pareciese ser una dirección de bitcoin, la cual se buscaba cambiarla por la cadena de bitcoin del atacante de manera que un pago en bitcoins se redirigiera al programador de la biblioteca.
De acuerdo con los servicios estadísticos de PyPI, 54 usuarios habían ya descargado el paquete un mes antes de que se borrara del índice. La dirección de bitcoin del atacante tiene de hecho unos 40 dólares, en donde la última transferencia de dinero se hizo en abril, lo que sugiere que la biblioteca no logró robarse bitcoins de nadie.
“Le di a los administradores de PyPI el nombre del paquete el cual ya borraron. Berthus comentó que “además, ellos bloquearon el nombre colourama para cualquier registro de algún paquete en el futuro”. El investigador dijo que descubrió los 12 paquetes usando un sistema automático que él mismo creó para escanear el depósito PyPI para paquetes que tuviesen nombres similares. La creación de dicho software se debió a una alerta de seguridad que envió la oficina de seguridad nacional de Eslovakia el año pasado, en donde advertía sobre 10 bibliotecas maliciosas subidas a PyPI. Todas ellas ya han sido dadas de baja. “Por el momento”, dice Berthus, “estoy concentrado en mejorar el escaner que hice, para así ir haciendo escaneos de forma más regular”.
Obviamente este tema ha despertado interés en otros depósitos de software como RubyGems o npm de Javascript, pero Berthus dice no haber explorado esto aún. El problema es que cada depósito de software en cada lenguaje de programación puede ser diferente por lo que no parece fácil implementar un escaner -digamos- universal.