Los investigadores de ciberseguridad han descubierto 36 paquetes maliciosos en el registro npm que están disfrazados de complementos de Strapi CMS pero vienen con diferentes cargas útiles para facilitar la explotación de Redis y PostgreSQL, implementar shells inversos, recopilar credenciales y colocar un implante persistente.
«Cada paquete contiene tres archivos (paquete.json, index.js, postinstall.js), no tiene descripción, repositorio ni página de inicio, y utiliza la versión 3.6.8 para aparecer como un complemento comunitario maduro de Strapi v3», SafeDep dicho.
Todos los paquetes npm identificados siguen la misma convención de nomenclatura, comenzando con «strapi-plugin-» y luego frases como «cron», «base de datos» o «servidor» para engañar a los desarrolladores desprevenidos para que los descarguen. Vale la pena señalar que los complementos oficiales de Strapi tienen su alcance en «@strapi/».
Los paquetes, subidos por cuatro cuentas de títeres de calcetines «umarbek1233», «kekylf12», «tikeqemif26» y «umar_bektembiev1» durante un período de 13 horas, se enumeran a continuación:
- strapi-plugin-cron
- strapi-plugin-config
- servidor-plugin-strapi
- base de datos-plugin-strapi
- strapi-plugin-núcleo
- ganchos-plugin-strapi
- monitor-plugin-strapi
- eventos-plugin-strapi
- registrador-plugin-strapi
- strapi-plugin-salud
- sincronización-plugin-strapi
- semilla-plugin-strapi
- correa-plugin-locale
- formulario-plugin-strapi
- strapi-plugin-notificar
- strapi-plugin-api
- strapi-plugin-sitemap-gen
- complemento-strapi-herramientas-nordicas
- strapi-plugin-nordica-sync
- strapi-plugin-nordica-cms
- complemento-strapi-nordica-api
- complemento-strapi-nordica-recon
- strapi-plugin-nordica-stage
- complemento-strapi-nordica-vhost
- complemento-strapi-nordica-deep
- complemento-strapi-nordica-lite
- complemento-strapi-nordica
- complemento-strapi-finseven
- strapi-plugin-hextest
- complemento-strapi-cms-herramientas
- strapi-plugin-sincronización-de-contenido
- herramientas-depuración-plugin-strapi
- control-de-estado-del-plugin-strapi
- strapi-plugin-guardarian-ext
- complemento-strapi-uuid-avanzado
- complemento-strapi-blurhash
Un análisis de los paquetes revela que el código malicioso está incrustado en el enlace del script postinstalación, que se ejecuta en «npm install» sin requerir ninguna interacción por parte del usuario. Se ejecuta con los mismos privilegios que los del usuario instalador, lo que significa que abusa del acceso raíz dentro de entornos CI/CD y contenedores Docker.
La evolución de las cargas útiles distribuidas como parte de la campaña es la siguiente:
- Utilice una instancia de Redis accesible localmente para la ejecución remota de código inyectando una entrada crontab (también conocida como tabla cron) para descargar y ejecutar un script de shell desde un servidor remoto cada minuto. El script de shell escribe un shell web PHP y un shell inverso de Node.js a través de SSH en el directorio de cargas públicas de Strapi. También intenta escanear el disco en busca de secretos (por ejemplo, Elasticsearch y frases iniciales de billeteras de criptomonedas) y extraer un módulo API Guardarian.
- Combine la explotación de Redis con el escape del contenedor Docker para escribir cargas útiles del shell en el host fuera del contenedor. También inicia un shell inverso directo de Python en el puerto 4444 y escribe un activador de shell inverso en el directorio node_modules de la aplicación a través de Redis.
- Implemente un shell inverso, escriba un descargador de shell a través de Redis y ejecute el archivo resultante.
- Escanee el sistema en busca de variables de entorno y cadenas de conexión de bases de datos PostgreSQL.
- Un recolector de credenciales ampliado y una carga útil de reconocimiento para recopilar volcados de entorno, configuraciones de Strapi, extracción de bases de datos de Redis mediante la ejecución de los comandos INFO, DBSIZE y KEYS, mapeo de topología de red y secretos de Docker/Kubernetes, claves criptográficas y archivos de billetera de criptomonedas.
- Lleve a cabo la explotación de la base de datos PostgreSQL conectándose a la base de datos PostgreSQL del objetivo utilizando credenciales codificadas y consultando tablas específicas de Strapi en busca de secretos. También descarta patrones coincidentes relacionados con criptomonedas (por ejemplo, billetera, transacción, depósito, retiro, activo, frío y saldo) e intenta conectarse a seis bases de datos de Guardarian. Esto indica que el actor de la amenaza ya está en posesión de los datos, obtenidos ya sea mediante un compromiso previo o por algún otro medio.
- Implementar un implante persistente diseñado para mantener el acceso remoto a un nombre de host específico («prod-strapi»).
- Facilite el robo de credenciales escaneando rutas codificadas y generando un shell inverso persistente.
«Las ocho cargas útiles muestran una narrativa clara: el atacante comenzó agresivamente (Redis RCE, Docker escape), descubrió que esos enfoques no funcionaban, giró hacia el reconocimiento y la recopilación de datos, utilizó credenciales codificadas para el acceso directo a la base de datos y finalmente se decidió por el acceso persistente con robo de credenciales dirigido», dijo SafeDep.
La naturaleza de las cargas útiles, combinada con el enfoque en los activos digitales y el uso de credenciales de bases de datos y nombres de host codificados, plantea la posibilidad de que la campaña fuera un ataque dirigido contra una plataforma de criptomonedas. Se recomienda a los usuarios que hayan instalado cualquiera de los paquetes antes mencionados que asuman un compromiso y roten todas las credenciales.
El descubrimiento coincide con el descubrimiento de varios ataques a la cadena de suministro dirigidos al ecosistema de código abierto.
- Una cuenta de GitHub llamada «ezmtebo» ha enviado más de 256 solicitudes de extracción en varios repositorios de código abierto que contienen una carga útil de exfiltración de credenciales. «Roba secretos a través de registros de CI y comentarios de relaciones públicas, inyecta flujos de trabajo temporales para volcar valores secretos, aplica automáticamente etiquetas para evitar las puertas pull_request_target y ejecuta un escáner de fondo/procesamiento durante 10 minutos después de que sale el script principal», dijo SafeDep.
- Un secuestro de «protocolo de desarrollo,» una organización verificada de GitHub, para distribuir robots comerciales maliciosos de Polymarket con dependencias npm con errores tipográficos («ts-bign» y «levex-refa» o «big-nunber» y «lint-builder») que roban claves privadas de billetera, filtran archivos confidenciales y abren una puerta trasera SSH en la máquina de la víctima. Mientras que «levex-refa» funciona como un ladrón de credenciales, «lint-builder» instala el SSH backdoor. Tanto «ts-bign» como «big-nunber» están diseñados para entregar «levex-refa» y «lint-builder», respectivamente, como una dependencia transitiva.
- Un compromiso del popular paquete Emacs «.kubernetes-el/kubernetes-el,» que explotó la vulnerabilidad Pwn Request en su flujo de trabajo de GitHub Actions usando el disparador pull_request_target para robar el GITHUB_TOKEN del repositorio, filtrar secretos de CI/CD, desfigurar el repositorio e inyectar código destructivo para eliminar casi todos los archivos del repositorio.
- Un compromiso de lo legítimo «xygeni/xygeni-acción» Flujo de trabajo de GitHub Actions que utiliza credenciales de mantenedor robadas para colocar una puerta trasera de shell inverso. Desde entonces, Xygeni ha implementaron nuevos controles de seguridad para abordar el incidente.
- Un compromiso del paquete npm legítimo «.mgc,» mediante una apropiación de cuenta para impulsar cuatro versiones maliciosas (1.2.1 a 1.2.4) que contienen un script dropper que detecta el sistema operativo y recupera una carga útil específica de la plataforma (un troyano Python para Linux y una variante de PowerShell para Windows llamada WAVESHAPER.V2) de un Gist de GitHub. El ataque se superpone directamente con el reciente ataque a la cadena de suministro dirigido a Axios, que se ha atribuido a un grupo de amenazas de Corea del Norte rastreado como UNC1069.
- Un paquete npm malicioso llamado «sesión-exprés-js» que escribe «express-session» y contiene un cuentagotas que recupera un troyano de acceso remoto (RAT) de siguiente etapa de JSON Keeper para realizar el robo de datos y el acceso persistente conectándose a «216.126.237[.]71» usando la biblioteca Socket.IO.
- Un compromiso del paquete PyPI legítimo «.billetera-bittensor» (versión 4.0.2), para implementar una puerta trasera que se activa durante una operación de descifrado de billetera para exfiltrar claves de billetera usando HTTPS, túnel DNS y TLS sin formato como canales de exfiltración a un dominio codificado o uno creado usando un algoritmo de generación de dominio (DGA) que se rota diariamente.
- Un paquete PyPI malicioso llamado «pironut» que escribe «pyrogram», un popular marco API de Python Telegram, para incorporar una puerta trasera sigilosa que se activa cada vez que un cliente de Telegram inicia y toma el control de la sesión de Telegram y el sistema host subyacente. «La puerta trasera registra controladores de mensajes ocultos de Telegram que permiten que dos cuentas controladas por atacantes codificadas ejecuten código Python arbitrario (a través del comando /e y la biblioteca meval) y comandos de shell arbitrarios (a través del comando y subproceso /shell) en el servidor de la víctima. máquina», afirmó Endor Labs.
- Un conjunto de tres extensiones maliciosas de Microsoft Visual Studio Code (VS Code) publicadas por «IolitaLabs» – «solidity-macos», «solidity-windows» y «solidity-linux» – que originalmente estaban inactivos desde 2018, pero se actualizaron el 25 de marzo de 2026 para lanzar una puerta trasera de varias etapas dirigida a los sistemas Windows y macOS al iniciar la aplicación para establecer la persistencia. En conjunto, las extensiones tenían 27,500 instalaciones antes de ser eliminadas.
- Múltiples versiones del «KhangNghiem/borrador rápido» Extensión VS Code en Open VSX (0.10.89, 0.10.105, 0.10.106 y 0.10.112) que ejecuta un descargador alojado en GitHub para implementar un Socket.IO RAT de segunda etapa, un ladrón de información, un módulo de exfiltración de archivos y un monitor de portapapeles desde un repositorio de GitHub. Curiosamente, las versiones 0.10.88, 0.10.111 y 0.10.129-135 se han encontrado limpios. «Ese no es el patrón de lanzamiento que se espera de una sola compilación comprometida o de un mantenedor que ha cambiado por completo a un comportamiento malicioso», dijo Aikido. «Parece más bien dos flujos de lanzamiento competitivos que comparten la misma identidad de editor».
En un informe publicado en febrero de 2026, Group-IB reveló que los ataques a la cadena de suministro de software se han convertido en «la fuerza dominante que está remodelando el panorama global de amenazas cibernéticas», y agregó que los actores de amenazas persiguen a proveedores confiables, software de código abierto, plataformas SaaS, extensiones de navegador y proveedores de servicios administrados para obtener acceso heredado a cientos de organizaciones posteriores.
La amenaza a la cadena de suministro puede escalar rápidamente de una sola intrusión localizada a algo que tiene un impacto transfronterizo a gran escala, con atacantes industrializando los compromisos de la cadena de suministro y convirtiéndola en un ecosistema «auto-reforzado», ya que ofrece alcance, velocidad y sigilo.
«Los repositorios de paquetes como npm y PyPI se han convertido en objetivos principales, credenciales de mantenimiento robadas y gusanos de malware automatizados para comprometer bibliotecas ampliamente utilizadas, convirtiendo los canales de desarrollo en canales de distribución a gran escala de código malicioso», Group-IB dicho




