{"id":170684,"date":"2026-05-15T00:24:32","date_gmt":"2026-05-14T22:24:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv"},"modified":"2026-05-15T00:24:32","modified_gmt":"2026-05-14T22:24:32","slug":"v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv","title":{"rendered":"Un gusano autorreplicante se ha integrado en 42 paquetes de NPM de TanStack","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Como resultado de la compromisi\u00f3n del proceso de formaci\u00f3n de lanzamientos en base a GitHub Actions en el proyecto TanStack, un atacante logr\u00f3 publicar 84 versiones maliciosas en el repositorio NPM, abarcando 42 paquetes NPM del ecosistema de TanStack. Algunos de los paquetes comprometidos ten\u00edan m\u00e1s de 10 millones de descargas por semana.     <\/p>\n<p>El acceso a la publicaci\u00f3n de lanzamientos fue obtenido debido a una configuraci\u00f3n incorrecta de pull_request_target \u00abPwn Request\u00bb en GitHub Actions (la especificaci\u00f3n de la m\u00e1scara en la configuraci\u00f3n llev\u00f3 a que se activara pull_request_target para solicitudes de extracci\u00f3n en forks externos), el envenenamiento de la cach\u00e9 de GitHub Actions a trav\u00e9s de un fork y la posibilidad de extraer el token OIDC de la memoria del proceso runner en ejecuci\u00f3n (Runner.Worker) a trav\u00e9s de la lectura del contenido \/proc\/\/mem.      <\/p>\n<p>Los paquetes NPM con cambios maliciosos fueron publicados el 11 de mayo entre las 22:20 y las 22:26 (MSK), fueron detectados 20 minutos despu\u00e9s y bloqueados una hora y media m\u00e1s tarde. Para cada uno de los paquetes NPM afectados se lanzaron dos versiones maliciosas, en las que se integr\u00f3 el c\u00f3digo para activar el gusano mini-shai-hulud, que buscaba tokens y credenciales en el entorno actual. Si se encontraba un token de conexi\u00f3n al directorio NPM, el gusano publicaba autom\u00e1ticamente nuevos lanzamientos maliciosos para los paquetes en desarrollo en el entorno actual, afectando el \u00e1rbol de dependencias. De esta manera, m\u00e1s de 400 paquetes NPM que utilizaban paquetes de TanStack como dependencias fueron comprometidos.    <\/p>\n<p>El gusano estaba alojado en el archivo router_init.js y se activaba al instalar manualmente el paquete afectado por el desarrollador o autom\u00e1ticamente en un entorno de integraci\u00f3n continua mediante los comandos \u00abnpm install\u00bb, \u00abpnpm install\u00bb o \u00abyarn install\u00bb. Tras ser activado, el gusano buscaba en el sistema tokens de NPM (~\/.npmrc), AWS, GCP, Azure, HashiCorp y Kubernetes K8s, as\u00ed como claves privadas SSH. Los datos encontrados se enviaban a los atacantes a trav\u00e9s de un mensajero descentralizado P2P getsession.org.      <\/p>\n<p>El gusano estaba dise\u00f1ado para llevar a cabo acciones destructivas en caso de revocaci\u00f3n del token NPM interceptado \u2014 en el sistema se configuraba la ejecuci\u00f3n peri\u00f3dica de un script ~\/.local\/bin\/gh-token-monitor.sh, que cada 60 segundos verificaba la actividad del token a trav\u00e9s de una llamada a api.github.com\/user y, en caso de revocaci\u00f3n del token, ejecutaba el comando \u00abrm -rf ~\/\u00bb.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=65432\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 GitHub Actions \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 TanStack \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 NPM 84 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0435 42 NPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 TanStack. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 10 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432 \u043d\u0435\u0434\u0435\u043b\u044e. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 pull_request_target &#171;Pwn Request&#187; \u0432 GitHub Actions (\u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-170684","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 GitHub Actions \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 TanStack \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 NPM 84 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0435 42 NPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 TanStack.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Erik Peterson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412 42 NPM-\u043f\u0430\u043a\u0435\u0442\u0430 TanStack \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441\u0430\u043c\u043e\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0447\u0435\u0440\u0432\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 GitHub Actions \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 TanStack \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 NPM 84 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0435 42 NPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 TanStack.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-14T22:24:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-05-14T22:24:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Se ha integrado un gusano autorreplicante en 42 paquetes NPM de TanStack | ProHoster","description":"Como resultado de la compromisi\u00f3n del proceso de formaci\u00f3n de lanzamientos en GitHub Actions en el proyecto TanStack, los atacantes lograron publicar 84 versiones maliciosas en el repositorio NPM, abarcando 42 paquetes NPM del stack TanStack.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412 42 NPM-\u043f\u0430\u043a\u0435\u0442\u0430 TanStack \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441\u0430\u043c\u043e\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0447\u0435\u0440\u0432\u044c | ProHoster","og:description":"\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 GitHub Actions \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 TanStack \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 NPM 84 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0435 42 NPM-\u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 TanStack.","og:url":"https:\/\/prohoster.info\/es\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-05-14T22:24:32+00:00","article:modified_time":"2026-05-14T22:24:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/170684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=170684"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/170684\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=170684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=170684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=170684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}