Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Secuestran 10 paquetes de npm para difundir el malware PolinRider vía Ethereum


Atacantes han tomado el control de 10 paquetes de npm, insertando código oculto en 12 versiones diferentes. Este código utiliza la cadena de bloques de Ethereum para localizar un servidor y descargar malware adicional. El hallazgo, identificado como sonatype-2026-010515 y denominado malware PolinRider, fue confirmado por Sonatype Research Labs el 4 de noviembre de 2026, asignándole una puntuación de severidad alta de 8.7.



Los atacantes han tomado el control de 10 paquetes de npm y han introducido código oculto en 12 versiones. El código utiliza la cadena de bloques de Ethereum para localizar un servidor y descargar más malware.

Sonatype Research Labs confirmó el hallazgo el 4 de noviembre de 2026 y lo rastrea como sonatype-2026-010515, con una puntuación de severidad alta de 8.7.

Malware PolinRider

Los paquetes secuestrados realizan tareas muy diferentes. Algunos ayudan con Redux, APIs de salud y seguimiento de actividad del navegador. Otros ofrecen utilidades y ejemplos de servidor.

Los paquetes son @adminide-stack/client-redux, @adminide-stack/health-api-server, @adminide-stack/user-activity-browser, @adminide-stack/utils, server-hemera-mongo, cdeops, @adminide-stack/forms-core, @adminide-stack/yantra-help-browser, @cdmbase/wiki-browser y @pubngo-stack/help-browser.

Seis versiones ocultan el cargador con Base64 y eval(atob(...)). Las otras seis utilizan un truco de permutación de caracteres y el constructor de funciones de JavaScript. El análisis técnico completo de Sonatype enumera cada versión afectada. Por ejemplo, @adminide-stack/utils tiene dos compilaciones maliciosas, 0.0.16-129 y 0.0.16-130, y cdeops tiene la 13.5.31.

Según la investigación técnica publicada por Sonatype Research Labs, cada cargador solicita a servidores RPC públicos de Ethereum una transacción enviada por un monedero fijo, 0x1eef0849eda15d87f64e51c73c8442cf3c8bcef3. Si esos servidores fallan, recurre a la API de Blockscout. El cargador lee los primeros cuatro bytes de la dirección del destinatario de la transacción como una dirección IPv4 y los siguientes cuatro como una dirección de respaldo.

A continuación, el malware extrae JavaScript codificado con XOR desde la primera dirección a través de HTTP simple en el puerto 443. Utiliza las rutas /0x/cls y /0x/ls. El código de /0x/cls se ejecuta dentro de la aplicación con eval y también en un proceso node -i independiente. El código de /0x/ls se ejecuta solo en el proceso independiente, para que pueda seguir funcionando después de que cierres la aplicación.

Este diseño funciona como un "buzón muerto" digital. El atacante puede publicar una nueva transacción con una nueva dirección de servidor y no volver a tocar los paquetes de npm. Bloquear un servidor no impide que el malware encuentre el siguiente.

La mayoría del malware de npm se ejecuta a través de un hook de preinstalación o postinstalación, y muchos equipos ahora los desactivan. Estos paquetes no tienen tales hooks. El código malicioso se ejecuta cuando la aplicación carga el paquete. En el caso de server-hemera-mongo, se ejecuta cuando comienza el servicio, ya que el código reside en dist/main.js.

Por lo tanto, desactivar los scripts de instalación no te ofrece protección aquí. Un truco similar apareció en una actividad anterior de PolinRider que ocultaba cargadores de JavaScript en proyectos de código abierto, donde los cargadores también utilizaban servicios de cadena de bloques para obtener una segunda etapa. Tú y tu equipo deben hacerse una pregunta sencilla: ¿se ejecutó realmente el código del paquete en la computadora portátil de un desarrollador, en un servidor de compilación o en un servicio en vivo?

Sonatype encontró el mismo monedero en las 12 versiones. El informe de GhostAction y PolinRider de GitGuardian del 27 de octubre de 2026 identifica este mismo monedero como el resolutor de Ethereum en los cargadores de PolinRider encontrados en repositorios hackeados de GitHub. Aquellos cargadores más antiguos también extraían /0x/cls y /0x/ls en el puerto 443.

Los datos del servidor apuntan en la misma dirección. El análisis de las versiones de npm de Greenflagged decodificó las transacciones del monedero y vio a 95.135.181.151 como el servidor anunciado el 3 de noviembre. GitGuardian ya había listado esa IP como un servidor de respaldo en un script de persistencia de PolinRider.

Los investigadores aún recomiendan tener cuidado con la atribución. Sonatype afirma que el vínculo no prueba que PolinRider y GhostAction compartan un mismo operador. La visión actual de GitGuardian es que el operador de GhostAction copió un lanzador público de PolinRider. La campaña de GhostAction ha afectado a decenas de miles de repositorios de GitHub, por lo que los dos grupos podrían compartir muchas víctimas.

PolinRider es también más antiguo de lo que parecía al principio. OpenSourceMalware rastreó el código de PolinRider hasta paquetes de npm de mayo de 2025, meses antes de las primeras víctimas conocidas en enero de 2026. Esa carga útil incluía una herramienta de acceso remoto y un robador de Python que iba tras navegadores, monederos, Git y almacenamiento en la nube.

Un informe del análisis comunitario vinculado a Sonatype dice que las etapas posteriores instalan un troyano de acceso remoto de Node que persiste a través de archivos de inicio para herramientas como VS Code, Cursor, Discord y GitHub Desktop.

Empieza por buscar las 12 versiones maliciosas en package-lock.json, yarn.lock, pnpm-lock.yaml, espejos internos, cachés y registros de compilación. Elimínalas y evita que los espejos las distribuyan. Guarda una copia para la investigación y cámbiate a versiones que tú mismo hayas comprobado.

Una entrada en el archivo de bloqueo por sí sola no prueba que el código se haya ejecutado. Comprueba qué punto de entrada cargó la aplicación y compáralo con los registros de procesos y de red. Un error de importación tampoco prueba la seguridad, ya que el código malicioso podría haberse ejecutado antes del fallo.

Si el código se ejecutó, trata el host como comprometido. Busca procesos node -i independientes iniciados por otro proceso de Node, y solicitudes HTTP simples al puerto 443 que utilicen /0x/cls o /0x/ls. Las solicitudes de carga útil llevan un encabezado Sec-V. Este dice A10-npm_inject en las seis versiones de Base64, A10-II en utils 0.0.16-130 y A10-E en cdeops 13.5.31.

Por último, rota cualquier secreto al que el proceso afectado pudiera haber tenido acceso. Esto incluye tokens de publicación de npm, acceso al repositorio de código fuente, claves de la nube y secretos de CI. El atacante puede cambiar el JavaScript remoto en cualquier momento, por lo que los registros, y no solo las listas de paquetes, muestran lo que realmente sucedió. El evento de seguridad de la Guía de Sonatype ofrece más ayuda para la detección.



Fuentes:
https://cybersecuritynews.com/hackers-hijack-10-npm-packages-to-spread-polinrider-malware-using-ethereum-blockchain/