{"id":1571,"date":"2026-07-15T10:56:57","date_gmt":"2026-07-15T10:56:57","guid":{"rendered":"https:\/\/cybercolombia.co\/index.php\/2026\/07\/15\/los-paquetes-npm-de-asyncapi-comprometidos-generan-malware-de-botnet-de-multiples-etapas-cyberdefensa-mx\/"},"modified":"2026-07-15T10:56:57","modified_gmt":"2026-07-15T10:56:57","slug":"los-paquetes-npm-de-asyncapi-comprometidos-generan-malware-de-botnet-de-multiples-etapas-cyberdefensa-mx","status":"publish","type":"post","link":"https:\/\/cybercolombia.co\/index.php\/2026\/07\/15\/los-paquetes-npm-de-asyncapi-comprometidos-generan-malware-de-botnet-de-multiples-etapas-cyberdefensa-mx\/","title":{"rendered":"Los paquetes npm de AsyncAPI comprometidos generan malware de botnet de m\u00faltiples etapas \u2013 CYBERDEFENSA.MX"},"content":{"rendered":"<div id=\"articlebody\">\n<p>Se han observado cuatro paquetes npm comprometidos en el espacio de nombres @asyncapi distribuyendo un cargador de botnet de varias etapas, seg\u00fan los hallazgos de <a href=\"https:\/\/www.ox.security\/blog\/asyncapi-npm-organization-compromised-2m-weekly-downloads-affected\/\" target=\"_blank\">Seguridad buey<\/a>, <a href=\"https:\/\/safedep.io\/asyncapi-generator-supply-chain-attack-miasma-rat\/\" target=\"_blank\">SafeDep<\/a>, <a href=\"https:\/\/socket.dev\/blog\/asyncapi-supply-chain-attack\" target=\"_blank\">Enchufe<\/a>y <a href=\"https:\/\/www.stepsecurity.io\/blog\/compromised-next-branch-pushes-malicious-asyncapi-generator-generator-helpers-and-generator-components-to-npm\" target=\"_blank\">PasoSeguridad<\/a>.<\/p>\n<p>Los paquetes afectados se enumeran a continuaci\u00f3n:<\/p>\n<ul>\n<li>@asyncapi\/generator-helpers@1.1.1<\/li>\n<li>@asyncapi\/generator-components@0.7.1<\/li>\n<li>@asyncapi\/generador@3.3.1<\/li>\n<li>@asyncapi\/specs(v6.11.2, v6.11.2-alpha.1)<\/li>\n<\/ul>\n<p>\u00abLos paquetes comprometidos implementan una carga \u00fatil ofuscada de primera etapa que descarga una carga \u00fatil cifrada de segunda etapa, identificada como Miasma, desde IPFS\u00bb, dijo Socket.<\/p>\n<p>Los paquetes envenenados incluyen un implante de JavaScript oculto, y cada uno de ellos contiene un archivo fuente inyectado que se decodifica en el mismo descargador de segunda etapa. A diferencia de iteraciones anteriores que aprovechaban los ganchos de instalaci\u00f3n para activar la ejecuci\u00f3n de una carga \u00fatil de JavaScript, en este caso el c\u00f3digo malicioso se ejecuta cuando Node.js carga el m\u00f3dulo infectado, despu\u00e9s de lo cual lanza un nodo en segundo plano independiente que descarga y ejecuta el malware desde IPFS.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/ai-vuln-protection-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQl2axNwsfhbXOFynrg_uAZsvHi3OvNGSA8KJO-BKR8Xm3x7yjKV3EvfY4v5mwXx6LF0uWFb9h9d9iAV_Pi-YYhqimX9wx4OaLdDJEdR215Xrxq_PAtXkaLfQso4pTSjbj6fvh_ZTliLpzWZSZfcoZgyXtKwhN-SSDDlmbtUqGLshc0KqYQGWYHMN52Sl1\/s728-e100\/zz-d.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>La carga \u00fatil de la siguiente etapa es un cargador de JavaScript cifrado llamado \u00absync.js\u00bb, que se escribe en rutas espec\u00edficas del sistema operativo y se ejecuta. La URL de descarga es \u00abipfs[.]io\/ipfs\/QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9.\u00bb El cargador contiene dos componentes:<\/p>\n<ul>\n<li>La carga \u00fatil final de JavaScript cifrada, que se decodifica en el marco de tareas de Miasma.<\/li>\n<li>Un gran blob cifrado utilizado por el marco de la cadena de generaci\u00f3n del tiempo de ejecuci\u00f3n.<\/li>\n<\/ul>\n<p>El marco incluye 744 m\u00f3dulos y est\u00e1 construido como un marco de comando que admite seis canales de comunicaci\u00f3n de comando y control (C2) independientes usando HTTP, Nostr Relay, IPFS, BitTorrent DHT, libp2p GossipSub P2P mesh y un contrato inteligente Ethereum.<\/p>\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiUcL3M6wy0HH0NFCXGNc5GZp4zueYcq7HIwgANEsslfT6x-elbIPlQ8ACaFbW31xI9iWUC5oSgQzotXYA2Xel0KEzhQ_ogstNHL8pWT24XkOaqSnDIc8TwqXpwRzxA-im1JHdjH7WaRBvlAoJEhteGKE0PZYacu8QNdQtpvBgaYdvk5hu6ZtG2WY8NXISp\/s1700-e365\/oxox.jpg\" style=\"display: block;  text-align: center; clear: left; float: left;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiUcL3M6wy0HH0NFCXGNc5GZp4zueYcq7HIwgANEsslfT6x-elbIPlQ8ACaFbW31xI9iWUC5oSgQzotXYA2Xel0KEzhQ_ogstNHL8pWT24XkOaqSnDIc8TwqXpwRzxA-im1JHdjH7WaRBvlAoJEhteGKE0PZYacu8QNdQtpvBgaYdvk5hu6ZtG2WY8NXISp\/s1700-e365\/oxox.jpg\" alt=\"\" border=\"0\" data-original-height=\"898\" data-original-width=\"1053\"\/><\/a><\/div>\n<p>Adem\u00e1s de facilitar el robo de credenciales, el envenenamiento de herramientas de inteligencia artificial, el movimiento lateral de la LAN y la propagaci\u00f3n similar a un gusano en los registros npm, PyPI y Cargo, Miasma presenta un mecanismo de persistencia propio, configurando claves de inicio autom\u00e1tico systemd, crontab, macOS launchd y Windows Registro.<\/p>\n<p>\u00abAunque el malware tiene algunas similitudes con las campa\u00f1as Shai-Hulud y Miasma, y \u200b\u200bcontiene la cadena Miasma varias veces dentro de su c\u00f3digo, este malware no es el mismo, ni se atribuye a las campa\u00f1as Miasma\/Shai-Hulud\/TeamPCP que hemos visto en el pasado\u00bb, dijo Moshe Siman Tov Bustan de OX Security.<\/p>\n<p>Adem\u00e1s, incorpora un interruptor de hombre muerto que monitorea un token robado y activa un borrado de directorio si el token es revocado, evitando sistemas identificados como sandboxes o entornos virtuales, as\u00ed como aquellos que tienen su idioma actual configurado en ruso o tienen instaladas herramientas de seguridad de CrowdStrike, SentinelOne, Microsoft Defender, CarbonBlack, Cylance, Osquery, Tanium y Qualys.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/sygnia-cyber-response-d-1\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiBxLQDy7VdLze43eMmpRllTXaPKPfB_veNUxQlqIu3-68GBJtegkhDGCqtaiSymOQviROdxln1FSd4zdMp5Jv9jeF1xQxLPc9uo9H7zW2nWHNax0wT0Y8JRj-zyUfbaCLqhxSfQT2sCfhWMBPL6UVgsh5RYVNVxwus_mW_BY9Ptwz3z7iF0_LWOnte-gqg\/s1600\/sy-d-1.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>\u00abSu camino operativo m\u00e1s claro es C2 basado en REST: el implante apunta a un punto final HTTP, acepta tareas cifradas y publica los resultados de los comandos en la misma infraestructura. Alrededor de ese n\u00facleo, la carga \u00fatil tambi\u00e9n brinda soporte para transporte de carga, cifrado de comandos, firma de nodos, actualizaciones de carga \u00fatil, administraci\u00f3n de archivos, ejecuci\u00f3n de shell y escritura de persistencia\u00bb.<\/p>\n<p>Seg\u00fan StepSecurity, se dice que el atacante obtuvo acceso push a los repositorios y utiliz\u00f3 el canal de lanzamiento leg\u00edtimo de GitHub Actions del proyecto para publicar paquetes con certificaciones de procedencia OIDC v\u00e1lidas. El ataque a la cadena de suministro no implic\u00f3 el robo de un token npm.<\/p>\n<p>\u00abAmbos ataques son compromisos de canalizaci\u00f3n de CI\/CD, no tokens npm robados ni mantenedores maliciosos\u00bb, dijo el investigador de seguridad Rohan Prabhu. \u00abEl atacante impuls\u00f3 las confirmaciones bajo una identidad git de marcador de posici\u00f3n y dej\u00f3 que el flujo de trabajo de lanzamiento real de cada repositorio hiciera la publicaci\u00f3n a trav\u00e9s de la integraci\u00f3n de editor confiable GitHub OIDC de npm\u00bb.<\/p>\n<p>\u00abLos paquetes resultantes llevan certificaciones de procedencia SLSA leg\u00edtimas, lo que demuestra \u00fanicamente que el flujo de trabajo autorizado del proyecto los produjo, no que las confirmaciones desencadenantes fueron leg\u00edtimas. La procedencia no protege contra una credencial push comprometida\u00bb.<\/p>\n<p>Desde entonces, las cinco versiones maliciosas no se han publicado en el registro npm. Se recomienda tratar cualquier punto final que haya importado o ejecutado una de las versiones del paquete afectado como potencialmente comprometido. Sin embargo, cabe se\u00f1alar que la exposici\u00f3n depende de si el m\u00f3dulo infectado se carg\u00f3 como parte de una compilaci\u00f3n o de un flujo de trabajo de desarrollador.<\/p>\n<p>\u00abNo hay ning\u00fan script de preinstalaci\u00f3n\/postinstalaci\u00f3n\/instalaci\u00f3n en ninguno de los tres archivos package.json\u00bb, dijo StepSecurity. \u00abEste cuentagotas se activa cuando se requiere el m\u00f3dulo envenenado () durante el uso normal del generador: en el momento en que un trabajo de compilaci\u00f3n o CI realmente llama a la biblioteca, no en el momento de la instalaci\u00f3n de npm\u00bb.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Se han observado cuatro paquetes npm comprometidos en el espacio de nombres @asyncapi distribuyendo un cargador de botnet de varias etapas, seg\u00fan los hallazgos de Seguridad buey, SafeDep, Enchufey PasoSeguridad. Los paquetes afectados se enumeran a continuaci\u00f3n: @asyncapi\/generator-helpers@1.1.1 @asyncapi\/generator-components@0.7.1 @asyncapi\/generador@3.3.1 @asyncapi\/specs(v6.11.2, v6.11.2-alpha.1) \u00abLos paquetes comprometidos implementan una carga \u00fatil ofuscada de primera etapa que descarga [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1379,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,5],"tags":[3785,173,1084,24,574,1247,52,60,573,277,276],"class_list":["post-1571","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-trending","tag-asyncapi","tag-botnet","tag-comprometidos","tag-cyberdefensa-mx","tag-etapas","tag-generan","tag-los","tag-malware","tag-multiples","tag-npm","tag-paquetes"],"_links":{"self":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/comments?post=1571"}],"version-history":[{"count":0,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1571\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media\/1379"}],"wp:attachment":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media?parent=1571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/categories?post=1571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/tags?post=1571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}