Se sospecha que los actores de amenazas detrás del ataque a la prisión de suministro dirigido al popular escáner Trivy están llevando a extremo ataques posteriores que han llevado al compromiso de una gran cantidad de paquetes npm con un tenia autopropagante previamente indocumentado denominado tenia de tumbo.
El nombre es una remisión al hecho de que el malware utiliza un contenedor ICP, que se refiere a contratos inteligentes a prueba de manipulaciones en la prisión de bloques de Internet Computer, como un solucionador de caídas muertas. El ampliación marca el primer desmán documentado públicamente de un recipiente ICP con el propósito claro de recuperar el servidor de comando y control (C2), dijo el investigador de Aikido Security, Charlie Eriksen.
La inventario de paquetes afectados se encuentra a continuación:
- 28 paquetes en el ámbito @EmilGroup
- 16 paquetes en el ámbito @opengov
- @teale.io/eslint-config
- @airtm/uuid-base32
- @pypestream/flotante-ui-dom
El ampliación se produce un día posteriormente de que los actores de amenazas aprovecharan una credencial comprometida para transmitir versiones maliciosas de trivy, trivy-action y setup-trivy que contenían un saqueador de credenciales. Se sospecha que una operación cibercriminal centrada en la estrato conocida como TeamPCP está detrás de los ataques.
La prisión de infección que involucra los paquetes npm implica servirse un garfio posterior a la instalación para ejecutar un cargador, que luego coloca una puerta trasera de Python que es responsable de contactar con el contenedor ICP para recuperar una URL que apunta a la carga útil de la venidero etapa. El hecho de que la infraestructura de dead drop esté descentralizada la hace resiliente y resistente a los esfuerzos de matanza.
“El compensador del recipiente puede cambiar la URL en cualquier momento, enviando nuevos archivos binarios a todos los hosts infectados sin tocar el implante”, dijo Eriksen.
La persistencia se establece mediante un servicio de afortunado systemd, que está configurado para iniciar automáticamente la puerta trasera de Python posteriormente de un retraso de 5 segundos si se finaliza por algún motivo mediante el uso de la directiva “Restart=always”. El servicio systemd se hace tener lugar por herramientas PostgreSQL (“pgmon”) en un intento de tener lugar desapercibido.
La puerta trasera, como se mencionó anteriormente, apasionamiento al recipiente ICP con un agente de afortunado de navegador simulado cada 50 minutos para recuperar la URL en texto sin formato. Luego, la URL se analiza para apañarse y ejecutar el ejecutable.
“Si la URL contiene youtube(.)com, el script la omite”, explicó Eriksen. “Este es el estado inactivo del contenedor. El atacante arsenal el implante apuntando el contenedor a un binario actual y lo desarma volviendo a un enlace de YouTube. Si el atacante actualiza el contenedor para que apunte a una nueva URL, cada máquina infectada recoge el nuevo binario en su venidero tienta. El antiguo binario sigue ejecutándose en segundo plano ya que el script nunca mata los procesos anteriores”.
Vale la pena señalar que Wiz asimismo ha detectado un interruptor de acabado similar basado en youtube(.)com en relación con el binario troyanizado Trivy (interpretación 0.69.4), que llega al mismo recipiente ICP a través de otro cuentagotas de Python (“sysmon.py”). Al momento de escribir este artículo, la URL devuelta por el C2 es un video de YouTube de rickroll.
The Hacker News descubrió que el recipiente ICP admite tres métodos: get_latest_link, http_request, update_link; el extremo de los cuales permite al actor de la amenaza modificar el comportamiento en cualquier momento para servir una carga útil actual.
En conjunto, los paquetes vienen con un archivo “deploy.js” que el atacante ejecuta manualmente para distribuir la carga maliciosa a cada paquete al que un token npm robado proporciona acercamiento de forma programática. El tenia, que se considera codificado por trepidación mediante una útil de inteligencia fabricado (IA), no intenta ocultar su funcionalidad.
“Esto no se activa con la instalación de npm”, dijo Aikido. “Es una útil independiente que el atacante utiliza con tokens robados para maximizar el radiodifusión de ataque”.
Para empeorar las cosas, se descubrió que una iteración posterior de CanisterWorm detectada en “@teale.io/eslint-config” versiones 1.8.11 y 1.8.12 se autopropaga sin escazes de intervención manual.
A diferencia de “deploy.js”, que era un script autónomo que el atacante tenía que ejecutar con los tokens npm robados para despachar una interpretación maliciosa de los paquetes npm al registro, la nueva cambio incorpora esta funcionalidad en “index.js” interiormente de una función findNpmTokens() que se ejecuta durante la etapa posterior a la instalación para compilar tokens de autenticación npm de la máquina de la víctima.
La principal diferencia aquí es que el script postinstalación, posteriormente de instalar la puerta trasera persistente, intenta encontrar cada token npm del entorno del desarrollador y genera el tenia inmediatamente con esos tokens iniciando “deploy.js” como un proceso en segundo plano completamente independiente.
Curiosamente, se dice que el actor de amenazas cambió la carga útil de la puerta trasera ICP por una prisión de prueba ficticia (“hello123”), probablemente para certificar que toda la prisión de ataque funcione según lo previsto ayer de juntar el malware.
“Este es el punto donde el ataque pasa de ‘la cuenta comprometida publica malware’ a ‘el malware compromete más cuentas y se publica a sí mismo'”, dijo Eriksen. “Cada desarrollador o canal de CI que instala este paquete y tiene un token npm accesible se convierte en un vector de propagación involuntario. Sus paquetes se infectan, sus usuarios intermedios los instalan y, si alguno de ellos tiene tokens, el ciclo se repite”.
(Esta es una historia en ampliación. Vuelva a consultarla para obtener más detalles).


