{"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\/pt\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv","title":{"rendered":"Worm autorreplicante integrado em 42 pacotes NPM do TanStack","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Devido \u00e0 comprometimento do processo de forma\u00e7\u00e3o de releases baseado no GitHub Actions no projeto TanStack, os atacantes conseguiram publicar 84 vers\u00f5es maliciosas no reposit\u00f3rio NPM, que abrangem 42 pacotes NPM do conjunto TanStack. Alguns dos pacotes comprometidos tinham mais de 10 milh\u00f5es de downloads por semana.     <\/p>\n<p>O acesso \u00e0 publica\u00e7\u00e3o de lan\u00e7amentos foi obtido devido a uma configura\u00e7\u00e3o incorreta do pull_request_target \u2018Pwn Request\u2019 nas A\u00e7\u00f5es do GitHub (a especifica\u00e7\u00e3o de um m\u00e1scara nas configura\u00e7\u00f5es levou \u00e0 execu\u00e7\u00e3o do pull_request_target para pull requests em forks externos), contamina\u00e7\u00e3o do cache das A\u00e7\u00f5es do GitHub atrav\u00e9s de um fork e \u00e0 possibilidade de extra\u00e7\u00e3o do token OIDC da mem\u00f3ria do processo runner em execu\u00e7\u00e3o (Runner.Worker) atrav\u00e9s da leitura do conte\u00fado \/proc\/\/mem.      <\/p>\n<p>Os pacotes NPM com altera\u00e7\u00f5es maliciosas foram publicados no dia 11 de maio, entre 22:20 e 22:26 (MSK), detectados ap\u00f3s 20 minutos e bloqueados cerca de uma hora e meia depois. Para cada um dos pacotes NPM afetados, foram lan\u00e7adas duas vers\u00f5es maliciosas, que integravam um c\u00f3digo para ativar o worm mini-shai-hulud, que buscava tokens e credenciais no ambiente atual. Caso um token de conex\u00e3o ao diret\u00f3rio NPM fosse descoberto, o worm publicava automaticamente novas releases maliciosas para os pacotes em desenvolvimento no ambiente atual, afetando a \u00e1rvore de depend\u00eancias. Desta maneira, mais de 400 pacotes NPM foram comprometidos, utilizando pacotes TanStack entre suas depend\u00eancias.    <\/p>\n<p>O verme estava localizado no arquivo router_init.js e era ativado quando o pacote infectado era instalado manualmente pelo desenvolvedor ou automaticamente no ambiente de integra\u00e7\u00e3o cont\u00ednua atrav\u00e9s dos comandos \u2018npm install\u2019, \u2018pnpm install\u2019 ou \u2018yarn install\u2019. Ap\u00f3s a ativa\u00e7\u00e3o, o verme buscava na sistema tokens do NPM (~\/.npmrc), AWS, GCP, Azure, HashiCorp e KubernetesK8s, bem como chaves SSH privadas. Os dados encontrados eram enviados aos invasores atrav\u00e9s do mensageiro descentralizado P2P getsession.org.      <\/p>\n<p>O verme tinha a capacidade de realizar a\u00e7\u00f5es destrutivas em caso de revoga\u00e7\u00e3o do token NPM interceptado \u2014 no sistema, um script era configurado para ser executado periodicamente em ~\/.local\/bin\/gh-token-monitor.sh, que a cada 60 segundos verificava a atividade do token atrav\u00e9s da chamada para api.github.com\/user e, em caso de revoga\u00e7\u00e3o do token, executava o comando \u2018rm -rf ~\/\u2019.<br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Um verme de autorreplica\u00e7\u00e3o foi integrado em 42 pacotes NPM do TanStack | ProHoster","description":"Devido a uma comprometimento no processo de cria\u00e7\u00e3o de lan\u00e7amentos com base no GitHub Actions no projeto TanStack, os atacantes conseguiram publicar no reposit\u00f3rio NPM 84 vers\u00f5es maliciosas, abrangendo 42 pacotes NPM da pilha TanStack.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/v-42-npm-paketa-tanstack-integrirovan-samorasprostranyayushhijsya-cherv","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/170684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=170684"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/170684\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=170684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=170684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=170684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}