{"id":78895,"date":"2026-05-13T19:10:54","date_gmt":"2026-05-13T16:10:54","guid":{"rendered":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/"},"modified":"2026-05-13T19:11:00","modified_gmt":"2026-05-13T16:11:00","slug":"tanstack-npm-supply-chain-compromise-malicious-versions","status":"publish","type":"post","link":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/","title":{"rendered":"TanStack npm Supply Chain Compromise: 84 Malicious Versions Detected Across 42 Packages"},"content":{"rendered":"<p class=\"wp-block-paragraph\">On May 11, 2026, between 19:20 and 19:26 UTC, an attacker published 84 malicious versions across 42 @tanstack\/* npm packages, triggering one of the most significant software supply chain incidents in recent memory. The <a href=\"\/category\/cybersecurity\/\">npm supply chain compromise<\/a> exploited a chain of three distinct vulnerabilities to bypass security controls and inject malware into widely-used open-source libraries.<\/p>\n<p class=\"wp-block-paragraph\">An external researcher working for StepSecurity detected the attack approximately 20 minutes after the malicious publish and immediately notified both TanStack and npm security. The malicious versions were deprecated within hours, and npm security was engaged to pull tarballs from the registry server-side.<\/p>\n<h2 class=\"wp-block-heading\">How the Attack Unfolded<\/h2>\n<p class=\"wp-block-paragraph\">The attack combined three separate vulnerabilities. First, the bundle-size.yml workflow used the pull_request_target trigger, which runs pull request code from untrusted forks while maintaining access to the base repository&#8217;s secrets and cache. Second, GitHub Actions cache entries were poisoned across the trust boundary between a fork and the main repository. Third, attacker-controlled binaries extracted an OIDC token directly from the GitHub Actions runner process memory, allowing unauthorized npm publishes.<\/p>\n<p class=\"wp-block-paragraph\">On May 10, an attacker created a fork of TanStack\/router named github.com\/zblgg\/configuration and authored a malicious commit containing a ~30,000-line bundled JavaScript payload. A pull request titled &#8220;WIP: simplify history build&#8221; was opened on May 11 at 10:49 UTC. Because the pull_request_target trigger bypasses first-time-contributor approval requirements, automated workflows immediately executed the fork&#8217;s code.<\/p>\n<p class=\"wp-block-paragraph\">The benchmark-pr job checked out the malicious pull request code and ran pnpm install, which triggered the execution of vite_setup.mjs. This payload was specifically designed to poison the pnpm cache with a key that the legitimate release.yml workflow would later restore. When the poisoned cache was restored during the next push to main, attacker-controlled binaries executed during the build phase.<\/p>\n<h2 class=\"wp-block-heading\">Malware Capabilities and Impact<\/h2>\n<p class=\"wp-block-paragraph\">When developers or CI environments ran npm install, pnpm install, or yarn install against any affected version, the malicious optionalDependencies entry resolved and executed a ~2.3 MB obfuscated router_init.js file. The script harvested credentials from AWS IMDS, AWS Secrets Manager, GCP metadata, Kubernetes service-account tokens, Vault tokens, ~\/.npmrc files, GitHub tokens, and SSH private keys.<\/p>\n<p class=\"wp-block-paragraph\">Stolen credentials were exfiltrated over the Session\/Oxen messenger file-upload network using end-to-end encryption, with no attacker-controlled command-and-control server. The malware also self-propagated by enumerating other packages the victim maintained via the npm registry search API and republishing them with the same injection.<\/p>\n<p class=\"wp-block-paragraph\">The 42 affected packages impacted the following families: @tanstack\/history, @tanstack\/react-query, @tanstack\/angular-query, @tanstack\/svelte-query, @tanstack\/solid-query, @tanstack\/vue-query, @tanstack\/react-table, @tanstack\/angular-table, @tanstack\/svelte-table, @tanstack\/solid-table, @tanstack\/vue-table, @tanstack\/react-form, @tanstack\/angular-form, @tanstack\/svelte-form, @tanstack\/solid-form, @tanstack\/vue-form, @tanstack\/react-virtual, @tanstack\/angular-virtual, @tanstack\/svelte-virtual, @tanstack\/solid-virtual, @tanstack\/vue-virtual, @tanstack\/router, @tanstack\/react-router, @tanstack\/angular-router, @tanstack\/svelte-router, @tanstack\/solid-router, and @tanstack\/vue-router.<\/p>\n<h2 class=\"wp-block-heading\">Root Cause and Vulnerability Chain<\/h2>\n<p class=\"wp-block-paragraph\">The attack required all three vulnerabilities working in concert. The pull_request_target pattern allowed fork code to execute in the base repository&#8217;s trust context. GitHub Actions cache poisoning allowed a pull request running in the base repository&#8217;s cache scope to inject malicious data that production workflows on main would later restore.<\/p>\n<p class=\"wp-block-paragraph\">Notably, the cache entry written by actions\/cache@v5 is not gated by workflow permissions. Cache writes use a runner-internal token, not the workflow GITHUB_TOKEN, meaning setting permissions: contents: read does not block cache mutation. The OIDC token extraction technique was not novel; it utilized the same memory-dumping approach documented in the March 2025 tj-actions\/changed-files compromise.<\/p>\n<p class=\"wp-block-paragraph\">The malware location the GitHub Actions Runner.Worker process via \/proc\/*\/cmdline, read \/proc\/<pid>\/maps and \/proc\/<pid>\/mem to dump worker memory, and extracted the OIDC token minted by the runner. This token was then used to authenticate direct POST requests to registry.npmjs.org, completely bypassing the workflow&#8217;s defined Publish Packages step.<\/p>\n<h2 class=\"wp-block-heading\">Detection and Response Timeline<\/h2>\n<p class=\"wp-block-paragraph\">Detection occurred externally and rapidly. At approximately 19:50 UTC on May 11, a researcher with StepSecurity opened GitHub issue #7383 with complete technical analysis of the malicious optionalDependencies fingerprint and an initial list of 14 affected packages. Within minutes, the researcher notified npm security directly.<\/p>\n<p class=\"wp-block-paragraph\">TanStack maintainers acknowledged the incident around 20:00 UTC and began coordinated incident response. At 20:10 UTC, all team push permissions were removed from GitHub in case maintainer machines were compromised. By 20:30 UTC, the maintainers had compiled the full indicators of compromise and requested npm security pull all affected tarballs from the registry.<\/p>\n<p class=\"wp-block-paragraph\">A comprehensive scan of all 295 @tanstack\/* packages by 21:00 UTC confirmed the scope: 42 packages with 84 malicious versions. All cache entries for all TanStack repositories were purged via GitHub&#8217;s API. A hardening pull request was merged the same day, restructuring bundle-size.yml, adding repository_owner guards, and pinning third-party action references to specific commit SHAs.<\/p>\n<h2 class=\"wp-block-heading\">Credential Rotation and Future Mitigation<\/h2>\n<p class=\"wp-block-paragraph\">TanStack strongly recommends that anyone who installed an affected version on May 11, 2026 rotate AWS, GCP, Kubernetes, Vault, GitHub, npm, and SSH credentials reachable from the install host. No npm tokens were stolen, and the npm publish workflow itself was not directly compromised, but treat the install host as potentially compromised.<\/p>\n<p class=\"wp-block-paragraph\">The incident exposed gaps in current practices. No internal alerting mechanisms detected the malicious publishes; the team learned of the compromise entirely from a third party. Additionally, floating action references (@v6.0.2, @main) on third-party actions create standing <a href=\"\/category\/cybersecurity\/\">supply chain security<\/a> risk independent of this incident. The incident also highlighted limitations in npm policy: the &#8220;no unpublish if dependents exist&#8221; rule prevented immediate unpublishing of affected versions, creating hours of delay during which malicious tarballs remained installable.<\/p>\n<p class=\"wp-block-paragraph\">OIDC trusted-publisher binding, while generally secure, offers no per-publish review mechanism. Once configured, any code path in a workflow can mint a publish-capable token. TanStack is evaluating moving to short-lived classic tokens with manual review or implementing provenance-source-verification to detect publishes from unexpected workflow steps.<\/p>\n<h2 class=\"wp-block-heading\">Unconfirmed Clean Families<\/h2>\n<p class=\"wp-block-paragraph\">The following @tanstack\/* package families were confirmed to not contain malicious versions: @tanstack\/query*, @tanstack\/table*, @tanstack\/form*, @tanstack\/virtual*, @tanstack\/store, and @tanstack\/start (the meta-package, not @tanstack\/start-*).<\/p>\n<p class=\"wp-block-paragraph\">For the full list of affected versions and mitigation guidance, refer to GitHub Security Advisory GHSA-g7cv-rxg3-hmpx and the tracking issue at TanStack\/router#7383. The incident underscores the critical importance of auditing pull_request_target workflows, pinning external action dependencies to commit hashes, implementing cache-access controls, and establishing internal alerting for unexpected publishes.<\/p>\n\n\n<p class=\"article-source-attribution wp-block-paragraph\"><em>Source: <a href=\"https:\/\/tanstack.com\/blog\/npm-supply-chain-compromise-postmortem?utm_source=tldrinfosec\" target=\"_blank\" rel=\"nofollow noopener\">tanstack.com<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An attacker exploited three chained vulnerabilities to publish 84 malicious npm versions across 42 TanStack packages on May 11. Detection occurred within 20 minutes; all versions were deprecated and npm security was engaged.<\/p>\n","protected":false},"author":8,"featured_media":78894,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_meta-robots-noindex":"","_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_pr_autopilot_social_copy":"{\"x_hook\":\"84 malicious npm versions published across 42 TanStack packages on May 11 via pull_request_target workflows, GitHub Actions cache poisoning, and OIDC token extraction. External researcher detected attack within 20 minutes.\",\"x_takeaways\":\"Key Details:\\n\ud83d\udd39 84 malicious versions across 42 @tanstack\/* packages\\n\ud83d\udd39 Three chained vulnerabilities: pull_request_target + cache poisoning + OIDC extraction\\n\ud83d\udd39 Malware harvested AWS, GCP, Kubernetes, Vault, GitHub, npm, SSH credentials\\n\ud83d\udd39 Exfiltration via Session\/Oxen messenger file-upload network\\n\ud83d\udd39 External researcher detected within 20 minutes; all versions deprecated same day\"}","_yoast_wpseo_opengraph_title":"TanStack npm Supply Chain Compromise: 84 Malicious Versions Detected","_yoast_wpseo_opengraph_description":"On May 11, 2026, attackers published 84 malicious npm versions across 42 TanStack packages by exploiting pull_request_target workflows, cache poisoning, and OIDC token extraction. All versions have been deprecated and removed from the registry.","_yoast_wpseo_opengraph_image":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","_yoast_wpseo_opengraph_image_id":78894,"_yoast_wpseo_twitter_title":"TanStack npm Supply Chain Compromise Explained","_yoast_wpseo_twitter_description":"84 malicious npm versions published across 42 TanStack packages via chained vulnerabilities. External researchers detected the attack within 20 minutes; all versions deprecated.","_yoast_wpseo_twitter_image":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","_yoast_wpseo_twitter_image_id":78894,"_yoast_wpseo_primary_category":439,"_extra_hide_author_box":"","_extra_featured_post":"0","_partner_post_id":0,"footnotes":""},"categories":[439],"tags":[4156,4162,4163,2585],"class_list":["post-78895","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybersecurity","tag-github-actions-security","tag-npm-packages","tag-oidc-token-extraction","tag-supply-chain-security","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>npm supply chain compromise - TanStack | Saudi Shopper<\/title>\n<meta name=\"description\" content=\"npm supply chain compromise: 84 malicious versions published across 42 TanStack packages on May 11. Attacker chained three vulnerabilities; all versions deprecated.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"npm supply chain compromise - TanStack | Saudi Shopper\" \/>\n<meta property=\"og:description\" content=\"npm supply chain compromise: 84 malicious versions published across 42 TanStack packages on May 11. Attacker chained three vulnerabilities; all versions deprecated.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/\" \/>\n<meta property=\"og:site_name\" content=\"Saudishopper\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SaudiShopper\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-13T16:10:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-13T16:11:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Mohamed Ghamdi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ssict\" \/>\n<meta name=\"twitter:site\" content=\"@ssict\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mohamed Ghamdi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/\"},\"author\":{\"name\":\"Mohamed Ghamdi\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#\\\/schema\\\/person\\\/c91ff01097dcdc0d20ea79378eb83440\"},\"headline\":\"TanStack npm Supply Chain Compromise: 84 Malicious Versions Detected Across 42 Packages\",\"datePublished\":\"2026-05-13T16:10:54+00:00\",\"dateModified\":\"2026-05-13T16:11:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/\"},\"wordCount\":1050,\"publisher\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/npm-supply-chain-compromise-tanstack-malware-attack.webp\",\"keywords\":[\"GitHub Actions security\",\"npm packages\",\"OIDC token extraction\",\"Supply Chain Security\"],\"articleSection\":[\"Cybersecurity\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/\",\"url\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/\",\"name\":\"npm supply chain compromise - TanStack | Saudi Shopper\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/npm-supply-chain-compromise-tanstack-malware-attack.webp\",\"datePublished\":\"2026-05-13T16:10:54+00:00\",\"dateModified\":\"2026-05-13T16:11:00+00:00\",\"description\":\"npm supply chain compromise: 84 malicious versions published across 42 TanStack packages on May 11. Attacker chained three vulnerabilities; all versions deprecated.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/npm-supply-chain-compromise-tanstack-malware-attack.webp\",\"contentUrl\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/npm-supply-chain-compromise-tanstack-malware-attack.webp\",\"width\":1200,\"height\":628,\"caption\":\"npm supply chain compromise visualization showing malicious code injection chain across GitHub Actions cache and npm registry layers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/tanstack-npm-supply-chain-compromise-malicious-versions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TanStack npm Supply Chain Compromise: 84 Malicious Versions Detected Across 42 Packages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/\",\"name\":\"Saudishopper\",\"description\":\"Saudi ICT Shopper News\",\"publisher\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#organization\",\"name\":\"Saudi ICT News\",\"alternateName\":\"Saudi ICT Shopper News\",\"url\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/SSTrans.png\",\"contentUrl\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/SSTrans.png\",\"width\":423,\"height\":165,\"caption\":\"Saudi ICT News\"},\"image\":{\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/SaudiShopper\",\"https:\\\/\\\/x.com\\\/ssict\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/#\\\/schema\\\/person\\\/c91ff01097dcdc0d20ea79378eb83440\",\"name\":\"Mohamed Ghamdi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/74c52ae9ccb128bafec358a5e56b2f53c4de12681285f3ab3e85c351172859bc?s=96&d=https%3A%2F%2Fsaudishopper.com.sa%2Fen%2Fwp-content%2Fuploads%2F2020%2F12%2Fcropped-ss-icon--150x150.png&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/74c52ae9ccb128bafec358a5e56b2f53c4de12681285f3ab3e85c351172859bc?s=96&d=https%3A%2F%2Fsaudishopper.com.sa%2Fen%2Fwp-content%2Fuploads%2F2020%2F12%2Fcropped-ss-icon--150x150.png&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/74c52ae9ccb128bafec358a5e56b2f53c4de12681285f3ab3e85c351172859bc?s=96&d=https%3A%2F%2Fsaudishopper.com.sa%2Fen%2Fwp-content%2Fuploads%2F2020%2F12%2Fcropped-ss-icon--150x150.png&r=g\",\"caption\":\"Mohamed Ghamdi\"},\"url\":\"https:\\\/\\\/saudishopper.com.sa\\\/en\\\/author\\\/mgamdi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"npm supply chain compromise - TanStack | Saudi Shopper","description":"npm supply chain compromise: 84 malicious versions published across 42 TanStack packages on May 11. Attacker chained three vulnerabilities; all versions deprecated.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/","og_locale":"en_US","og_type":"article","og_title":"npm supply chain compromise - TanStack | Saudi Shopper","og_description":"npm supply chain compromise: 84 malicious versions published across 42 TanStack packages on May 11. Attacker chained three vulnerabilities; all versions deprecated.","og_url":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/","og_site_name":"Saudishopper","article_publisher":"https:\/\/www.facebook.com\/SaudiShopper","article_published_time":"2026-05-13T16:10:54+00:00","article_modified_time":"2026-05-13T16:11:00+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","type":"image\/webp"}],"author":"Mohamed Ghamdi","twitter_card":"summary_large_image","twitter_creator":"@ssict","twitter_site":"@ssict","twitter_misc":{"Written by":"Mohamed Ghamdi","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#article","isPartOf":{"@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/"},"author":{"name":"Mohamed Ghamdi","@id":"https:\/\/saudishopper.com.sa\/en\/#\/schema\/person\/c91ff01097dcdc0d20ea79378eb83440"},"headline":"TanStack npm Supply Chain Compromise: 84 Malicious Versions Detected Across 42 Packages","datePublished":"2026-05-13T16:10:54+00:00","dateModified":"2026-05-13T16:11:00+00:00","mainEntityOfPage":{"@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/"},"wordCount":1050,"publisher":{"@id":"https:\/\/saudishopper.com.sa\/en\/#organization"},"image":{"@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#primaryimage"},"thumbnailUrl":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","keywords":["GitHub Actions security","npm packages","OIDC token extraction","Supply Chain Security"],"articleSection":["Cybersecurity"],"inLanguage":"en-US","copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/saudishopper.com.sa\/en\/#organization"}},{"@type":"WebPage","@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/","url":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/","name":"npm supply chain compromise - TanStack | Saudi Shopper","isPartOf":{"@id":"https:\/\/saudishopper.com.sa\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#primaryimage"},"image":{"@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#primaryimage"},"thumbnailUrl":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","datePublished":"2026-05-13T16:10:54+00:00","dateModified":"2026-05-13T16:11:00+00:00","description":"npm supply chain compromise: 84 malicious versions published across 42 TanStack packages on May 11. Attacker chained three vulnerabilities; all versions deprecated.","breadcrumb":{"@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#primaryimage","url":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","contentUrl":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2026\/05\/npm-supply-chain-compromise-tanstack-malware-attack.webp","width":1200,"height":628,"caption":"npm supply chain compromise visualization showing malicious code injection chain across GitHub Actions cache and npm registry layers"},{"@type":"BreadcrumbList","@id":"https:\/\/saudishopper.com.sa\/en\/tanstack-npm-supply-chain-compromise-malicious-versions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/saudishopper.com.sa\/en\/"},{"@type":"ListItem","position":2,"name":"TanStack npm Supply Chain Compromise: 84 Malicious Versions Detected Across 42 Packages"}]},{"@type":"WebSite","@id":"https:\/\/saudishopper.com.sa\/en\/#website","url":"https:\/\/saudishopper.com.sa\/en\/","name":"Saudishopper","description":"Saudi ICT Shopper News","publisher":{"@id":"https:\/\/saudishopper.com.sa\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/saudishopper.com.sa\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/saudishopper.com.sa\/en\/#organization","name":"Saudi ICT News","alternateName":"Saudi ICT Shopper News","url":"https:\/\/saudishopper.com.sa\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/saudishopper.com.sa\/en\/#\/schema\/logo\/image\/","url":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2020\/08\/SSTrans.png","contentUrl":"https:\/\/saudishopper.com.sa\/en\/wp-content\/uploads\/2020\/08\/SSTrans.png","width":423,"height":165,"caption":"Saudi ICT News"},"image":{"@id":"https:\/\/saudishopper.com.sa\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SaudiShopper","https:\/\/x.com\/ssict"]},{"@type":"Person","@id":"https:\/\/saudishopper.com.sa\/en\/#\/schema\/person\/c91ff01097dcdc0d20ea79378eb83440","name":"Mohamed Ghamdi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/74c52ae9ccb128bafec358a5e56b2f53c4de12681285f3ab3e85c351172859bc?s=96&d=https%3A%2F%2Fsaudishopper.com.sa%2Fen%2Fwp-content%2Fuploads%2F2020%2F12%2Fcropped-ss-icon--150x150.png&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/74c52ae9ccb128bafec358a5e56b2f53c4de12681285f3ab3e85c351172859bc?s=96&d=https%3A%2F%2Fsaudishopper.com.sa%2Fen%2Fwp-content%2Fuploads%2F2020%2F12%2Fcropped-ss-icon--150x150.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/74c52ae9ccb128bafec358a5e56b2f53c4de12681285f3ab3e85c351172859bc?s=96&d=https%3A%2F%2Fsaudishopper.com.sa%2Fen%2Fwp-content%2Fuploads%2F2020%2F12%2Fcropped-ss-icon--150x150.png&r=g","caption":"Mohamed Ghamdi"},"url":"https:\/\/saudishopper.com.sa\/en\/author\/mgamdi\/"}]}},"_links":{"self":[{"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/posts\/78895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/comments?post=78895"}],"version-history":[{"count":1,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/posts\/78895\/revisions"}],"predecessor-version":[{"id":78896,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/posts\/78895\/revisions\/78896"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/media\/78894"}],"wp:attachment":[{"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/media?parent=78895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/categories?post=78895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saudishopper.com.sa\/en\/wp-json\/wp\/v2\/tags?post=78895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}