SleeperGem utiliza tres paquetes maliciosos de RubyGems para atacar las máquinas de los desarrolladores – CYBERDEFENSA.MX
Los investigadores de ciberseguridad han señalado un nuevo ataque a la cadena de suministro de software con nombre en código SleeperGem dirigido al ecosistema Ruby después de que se publicaran tres gemas maliciosas en RubyGems con el objetivo final de servir cargas útiles adicionales.
Las gemas rebeldes se enumeran a continuación:
«Cada lanzamiento malicioso es un cargador», StepSecurity dicho en un análisis. «Obtiene una segunda etapa de un host Forgejo controlado por un atacante, verifica si se está ejecutando en un sistema de compilación y lo omite si lo está, y en una máquina de desarrollo coloca un demonio nativo e instala la persistencia».
Un aspecto del ataque que se destaca de inmediato es que «git_credential_manager» se hace pasar por el administrador oficial de credenciales Git de Microsoft, mientras que los otros dos habían estado inactivos durante años antes de recibir las actualizaciones maliciosas. «Dendreo» se actualizó por última vez el 24 de octubre de 2020 y «fastlane-plugin-run_tests_firebase_testlab» permaneció inactivo desde el 9 de marzo de 2019, antes de las nuevas versiones.
Otro rasgo definitorio de la actividad es que los lanzamientos se publicaron directamente en el registro sin ningún compromiso o etiqueta coincidente en los proyectos fuente.
Curiosamente, «git_credential_manager» ha sido agregado como una dependencia de cinco paquetes, incluidos «Dendreo» y «fastlane-plugin-run_tests_firebase_testlab», lo que permite efectivamente que la carga maliciosa se propague a los usuarios existentes de los paquetes.
- dendreo
- fastlane-plugin-run_tests_firebase_testlab
- holguraHtmlToMarkdown
- seo_optimizador
- métodos_rápidos_array
Todos los paquetes antes mencionados, a excepción de «fastlane-plugin-run_tests_firebase_testlab», se mantienen en la misma cuenta («LR-DEV«). El hecho de que la gema pertenece a un mantenedor diferente («habitación rosa«) indica que es probable que más de una cuenta haya sido comprometida para enviar las versiones no autorizadas a RubyGems.
Una vez instalado, el malware integrado en estos paquetes escanea el sistema infectado en busca de aproximadamente 30 variables de entorno, incluidas las relacionadas con GitHub Actions, GitLab, CircleCI, Travis, Jenkins y Vercel. Si se identifica alguno de ellos, se cierra de inmediato. Se considera que la verificación es un intento intencional de evitar la ejecución en corredores de CI efímeros y garantizar que se ejecute en una máquina de desarrollador.
En el caso de «git_credential_manager», el código malicioso se activa cuando se requiere la biblioteca, lo que provoca que descargue dos cargas útiles desde una instancia pública de Forgejo («git.disroot[.]org/git-ecosystem»): un script de shell («deploy.sh») y un binario nativo que lleva el mismo nombre que la herramienta que disfraza la gema. En Windows, la carga útil recuperada se ejecuta a través de PowerShell.
Mientras que la versión 2.8.2 simplemente prepara las cargas útiles, la versión 2.8.3 de la gema pasa a la siguiente fase del ataque. Esto implica usar el script de instalación para iniciar el binario como un demonio en segundo plano, después de lo cual establece la persistencia usando una entrada cron y como un servicio de usuario systemd y consulta los grupos sudo y wheel.
«Si el usuario puede ejecutar sudo sin contraseña, el script se vuelve a ejecutar como root, y cuando se ejecuta como root coloca una copia raíz setuid del shell del sistema en una ruta elegida para imitar una utilidad de red», dijo StepSecurity.
Se recomienda a los usuarios que hayan instalado cualquiera de las gemas antes mencionadas que traten las máquinas y los secretos asociados como si estuvieran comprometidos. También se recomienda eliminar el demonio eliminado en «~/.local/share/gcm/», borrar los métodos de persistencia, buscar un shell setuid en «/usr/local/sbin/ping6» y rotar todas las credenciales.
«Una cuenta de RubyGems que ha permanecido inactiva durante seis o siete años no parece riesgosa para nadie», Charlie Eriksen, investigador de Aikido Security dicho. «Ese es exactamente el perfil que vale la pena tomar. De ahí proviene el nombre SleeperGem: no es un activo de atacante plantado y de largo plazo, sino una cuenta real y ordinaria que simplemente había quedado inactiva y parecía lo suficientemente inofensiva como para secuestrarla sin que nadie se diera cuenta».
RubyGems como punto muerto de filtración de datos
La divulgación se produce más de dos meses después de que RubyGems detuviera brevemente los registros de cuentas después de que los delincuentes impulsaran docenas de paquetes maliciosos como parte de una campaña coordinada de publicación de spam. Casi al mismo tiempo, los investigadores de Socket señalaron una campaña paralela que inundó el registro con 150 gemas y abusó de ellas como canal de filtración de datos.
A principios de este mes, Mend.io reveló detalles de un ataque a la cadena de suministro de software no documentado que empleó otro conjunto de 14 paquetes RubyGems para almacenar datos de credenciales robadas.
Específicamente, se descubrió que una extensión de navegador maliciosa recopiló credenciales a través de una API accesible localmente, empaquetó la información en archivos .gem válidos completamente dentro del navegador usando JavaScript y API web estándar, y cargó esos paquetes directamente en RubyGems.org usando una clave API de RubyGems codificada.
«El botín incluyó contraseñas de texto plano, claves privadas SSH, credenciales de AWS, frases iniciales de billeteras criptográficas, números de Seguro Social, números de tarjetas de crédito y detalles de cuentas bancarias en 63 elementos de la bóveda», Maciej Mensfeld dicho.
«RubyGems no era el mecanismo de entrega aquí. Era el punto muerto: un dominio confiable y de alto tráfico donde los datos robados permanecían hasta que el atacante regresaba a buscarlos, invisible entre las cargas normales de los desarrolladores».























