{"id":323,"date":"2026-03-21T11:03:20","date_gmt":"2026-03-21T11:03:20","guid":{"rendered":"https:\/\/cybercolombia.co\/index.php\/2026\/03\/21\/el-ataque-de-trivy-a-la-cadena-de-suministro-desencadena-un-gusano-bote-que-se-propaga-automaticamente-en-paquetes-de-47-npm-cyberdefensa-mx\/"},"modified":"2026-03-21T11:03:20","modified_gmt":"2026-03-21T11:03:20","slug":"el-ataque-de-trivy-a-la-cadena-de-suministro-desencadena-un-gusano-bote-que-se-propaga-automaticamente-en-paquetes-de-47-npm-cyberdefensa-mx","status":"publish","type":"post","link":"https:\/\/cybercolombia.co\/index.php\/2026\/03\/21\/el-ataque-de-trivy-a-la-cadena-de-suministro-desencadena-un-gusano-bote-que-se-propaga-automaticamente-en-paquetes-de-47-npm-cyberdefensa-mx\/","title":{"rendered":"El ataque de Trivy a la cadena de suministro desencadena un gusano bote que se propaga autom\u00e1ticamente en paquetes de 47 npm \u2013 CYBERDEFENSA.MX"},"content":{"rendered":"<div id=\"articlebody\">\n<p>Se sospecha que los actores de amenazas detr\u00e1s del ataque a la cadena de suministro dirigido al popular esc\u00e1ner Trivy est\u00e1n llevando a cabo ataques posteriores que han llevado al compromiso de una gran cantidad de paquetes npm con un gusano autopropagante previamente indocumentado denominado <strong>gusano de bote<\/strong>.<\/p>\n<p>El nombre es una referencia al hecho de que el malware utiliza un <a href=\"https:\/\/docs.internetcomputer.org\/building-apps\/essentials\/canisters\" rel=\"noopener\" target=\"_blank\">recipiente de PIC<\/a>que se refiere a contratos inteligentes a prueba de manipulaciones en la cadena de bloques de Internet Computer, como un <a href=\"https:\/\/attack.mitre.org\/techniques\/T1102\/001\/\" rel=\"noopener\" target=\"_blank\">solucionador de ca\u00edda muerta<\/a>. El desarrollo marca el primer abuso documentado p\u00fablicamente de un recipiente ICP con el prop\u00f3sito expl\u00edcito de recuperar el servidor de comando y control (C2), seg\u00fan Charlie Eriksen, investigador de seguridad de Aikido. <a href=\"https:\/\/www.aikido.dev\/blog\/teampcp-deploys-worm-npm-trivy-compromise\" rel=\"noopener\" target=\"_blank\">dicho<\/a>.<\/p>\n<p>La lista de paquetes afectados se encuentra a continuaci\u00f3n:<\/p>\n<ul>\n<li>28 paquetes en el \u00e1mbito @EmilGroup<\/li>\n<li>16 paquetes en el \u00e1mbito @opengov<\/li>\n<li>@teale.io\/eslint-config<\/li>\n<li>@airtm\/uuid-base32<\/li>\n<li>@pypestream\/flotante-ui-dom<\/li>\n<\/ul>\n<p>El desarrollo se produce un d\u00eda despu\u00e9s de que los actores de amenazas aprovecharan una credencial comprometida para publicar versiones maliciosas de trivy, trivy-action y setup-trivy que conten\u00edan un ladr\u00f3n de credenciales. Un enfoque en la nube <a href=\"https:\/\/cyble.com\/threat-actor-profiles\/teampcp\/\" rel=\"noopener\" target=\"_blank\">operaci\u00f3n cibercriminal<\/a> Se sospecha que el grupo conocido como TeamPCP est\u00e1 detr\u00e1s de los ataques.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/not-fast-enough-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhlXM830ruQd2xT6M7JNeNRjaFa1onD12WjSCHihTFMTzbyfT9h-irPmXy_h3E1HGSs6sdv7FTmnyNVTM5kmSb7BuUtZe8gKoTQt99P1sSzRcqqXpOJP6eoAOhR3DGb6qHx9kOZ_HBZUMmVnsnd0DM7QfUp81bgzTvvgLww6oqB-EhnDfWXH5pWCYhAsyLs\/s728-e100\/tl-d.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>La cadena de infecci\u00f3n que involucra los paquetes npm implica aprovechar un gancho posterior a la instalaci\u00f3n 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 \u00fatil de la siguiente etapa. El hecho de que la infraestructura de dead drop est\u00e9 descentralizada la hace resiliente y resistente a los esfuerzos de eliminaci\u00f3n.<\/p>\n<p>\u00abEl controlador del recipiente puede cambiar la URL en cualquier momento, enviando nuevos archivos binarios a todos los hosts infectados sin tocar el implante\u00bb, dijo Eriksen.<\/p>\n<p>La persistencia se establece mediante un servicio de usuario systemd, que est\u00e1 configurado para iniciar autom\u00e1ticamente la puerta trasera de Python despu\u00e9s de un retraso de 5 segundos si se finaliza por alg\u00fan motivo mediante el uso de \u00ab<a href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/latest\/systemd.service.html\" rel=\"noopener\" target=\"_blank\">Reiniciar=siempre<\/a>\u00bb directiva. El servicio systemd se hace pasar por herramientas PostgreSQL (\u00abpgmon\u00bb) en un intento de pasar desapercibido.<\/p>\n<p>La puerta trasera, como se mencion\u00f3 antes, llama al <a href=\"https:\/\/dashboard.internetcomputer.org\/canister\/tdtqy-oyaaa-aaaae-af2dq-cai\" rel=\"noopener\" target=\"_blank\">recipiente de PIC<\/a> con un agente de usuario del navegador falso cada 50 minutos para recuperar la URL en texto sin formato. Posteriormente, la URL se analiza para buscar y ejecutar el ejecutable.<\/p>\n<p>\u00abSi la URL contiene youtube[.]com, el gui\u00f3n lo omite\u00bb, explic\u00f3 Eriksen. \u00abEste es el estado inactivo del recipiente. El atacante arma el implante apuntando el recipiente a un binario real y lo desarma volviendo a un enlace de YouTube. Si el atacante actualiza el contenedor para que apunte a una nueva URL, cada m\u00e1quina infectada recoge el nuevo binario en su siguiente sondeo. El antiguo binario sigue ejecut\u00e1ndose en segundo plano ya que el script nunca finaliza procesos anteriores\u00bb.<\/p>\n<p>Vale la pena se\u00f1alar que un youtube similar[.]Wiz tambi\u00e9n ha se\u00f1alado el interruptor de apagado basado en com en relaci\u00f3n con el binario troyanizado Trivy (versi\u00f3n 0.69.4), que llega al mismo recipiente ICP a trav\u00e9s de otro cuentagotas de Python (\u00absysmon.py\u00bb). Al momento de escribir, la URL devuelta por el C2 es una <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rickrolling\" rel=\"noopener\" target=\"_blank\">v\u00eddeo de youtube de rickroll<\/a>.<\/p>\n<p>The Hacker News descubri\u00f3 que el recipiente ICP <a href=\"https:\/\/dashboard.internetcomputer.org\/canister\/tdtqy-oyaaa-aaaae-af2dq-cai\" rel=\"noopener\" target=\"_blank\">apoya<\/a> tres m\u00e9todos (get_latest_link, http_request, update_link), el \u00faltimo de los cuales permite al actor de amenazas modificar el comportamiento en cualquier momento para servir una carga \u00fatil real.<\/p>\n<p>En conjunto, los paquetes vienen con un archivo \u00abdeploy.js\u00bb que el atacante ejecuta manualmente para distribuir la carga maliciosa a cada paquete al que un token npm robado proporciona acceso de forma program\u00e1tica. El gusano, que se considera codificado por vibraci\u00f3n mediante una herramienta de inteligencia artificial (IA), no intenta ocultar su funcionalidad.<\/p>\n<p>\u00abEsto no se activa con la instalaci\u00f3n de npm\u00bb, dijo Aikido. \u00abEs una herramienta independiente que el atacante utiliza con tokens robados para maximizar el radio de explosi\u00f3n\u00bb.<\/p>\n<p>Para empeorar las cosas, se descubri\u00f3 que una iteraci\u00f3n posterior de CanisterWorm detectada en \u00ab@teale.io\/eslint-config\u00bb versiones 1.8.11 y 1.8.12 se autopropaga sin necesidad de intervenci\u00f3n manual.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/fs-report-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjWQgUDT06NQu9vGMPC7BWROmJABTIWg058l7oGKD-v3ZchC8_66xjbclOE9koChsRf5CEKgqrXTVrne_00PdGokh3brhvF-g33I4FYYpTukrvuNQWXZOVAfon6-2axyRoVJ4uOrXPqRhxfZUaJWEm-K9esUS3ql8VSVWAKLqyfhHLgMSXhkMTkcOtGSX7R\/s728-e100\/fs-report-d.png\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>A diferencia de \u00abdeploy.js\u00bb, que era un script aut\u00f3nomo que el atacante ten\u00eda que ejecutar con los tokens npm robados para enviar una versi\u00f3n maliciosa de los paquetes npm al registro, la nueva variante incorpora esta funcionalidad en \u00abindex.js\u00bb dentro de una funci\u00f3n findNpmTokens() que se ejecuta durante la fase posterior a la instalaci\u00f3n para recopilar tokens de autenticaci\u00f3n npm de la m\u00e1quina de la v\u00edctima.<\/p>\n<p>La principal diferencia aqu\u00ed es que el script postinstalaci\u00f3n, despu\u00e9s de instalar la puerta trasera persistente, intenta localizar cada token npm del entorno del desarrollador y genera el gusano inmediatamente con esos tokens iniciando \u00abdeploy.js\u00bb como un proceso en segundo plano completamente independiente.<\/p>\n<p>Curiosamente, se dice que el actor de amenazas cambi\u00f3 la carga \u00fatil de la puerta trasera ICP por una cadena de prueba ficticia (\u00abhello123\u00bb), probablemente para garantizar que toda la cadena de ataque funcione seg\u00fan lo previsto antes de agregar el malware.<\/p>\n<p>\u00abEste es el punto donde el ataque pasa de &#8216;la cuenta comprometida publica malware&#8217; a &#8216;el malware compromete m\u00e1s cuentas y se publica a s\u00ed mismo&#8217;\u00bb, dijo Eriksen. \u00abCada desarrollador o canal de CI que instala este paquete y tiene un token npm accesible se convierte en un vector de propagaci\u00f3n involuntario. Sus paquetes se infectan, sus usuarios intermedios los instalan y, si alguno de ellos tiene tokens, el ciclo se repite\u00bb.<\/p>\n<p><em>(Esta es una historia en desarrollo. Vuelva a consultarla para obtener m\u00e1s detalles).<\/em><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Se sospecha que los actores de amenazas detr\u00e1s del ataque a la cadena de suministro dirigido al popular esc\u00e1ner Trivy est\u00e1n llevando a cabo ataques posteriores que han llevado al compromiso de una gran cantidad de paquetes npm con un gusano autopropagante previamente indocumentado denominado gusano de bote. El nombre es una referencia al hecho [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":108,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,5],"tags":[181,1146,1145,249,24,1121,1144,277,276,865,250,1130],"class_list":["post-323","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-trending","tag-ataque","tag-automaticamente","tag-bote","tag-cadena","tag-cyberdefensa-mx","tag-desencadena","tag-gusano","tag-npm","tag-paquetes","tag-propaga","tag-suministro","tag-trivy"],"_links":{"self":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/323","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=323"}],"version-history":[{"count":0,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/323\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media\/108"}],"wp:attachment":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media?parent=323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/categories?post=323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/tags?post=323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}