Search
Find a vulnerability
Search criteria
ⓘ
Use this form to refine search results.
Full-text search supports keyword queries with ranking and filtering.
You can combine vendor, product, and sources to narrow results.
Enable “Apply ordering” to sort by date instead of relevance.
4 vulnerabilities by BeProduct
CVE-2026-46412 (GCVE-0-2026-46412)
Vulnerability from nvd – Published: 2026-07-20 14:31 – Updated: 2026-07-20 15:32
VLAI
EPSS
VEX
Title
Malicious code in @beproduct/nestjs-auth (0.1.2 through 0.1.19) — Mini Shai-Hulud worm
Summary
@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `>=0.1.2 <=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes.
Severity
10 (Critical)
SSVC
Exploitation: none
Automatable: yes
Technical Impact: total
CISA Coordinator (v2.0.3)
CWE
- CWE-506 - Embedded Malicious Code
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/BeProduct/beproduct-org-nestjs… | x_refsource_CONFIRM |
| https://www.aikido.dev/blog/checklist-github-actions | x_refsource_MISC |
| https://www.aikido.dev/blog/mini-shai-hulud-is-ba… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| BeProduct | beproduct-org-nestjs-auth |
Affected:
>= 0.1.2, <= 0.1.19
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-46412",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-20T15:32:17.643031Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-20T15:32:29.327Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "beproduct-org-nestjs-auth",
"vendor": "BeProduct",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.1.2, \u003c= 0.1.19"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `\u003e=0.1.2 \u003c=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 10,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-506",
"description": "CWE-506: Embedded Malicious Code",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-07-20T14:31:53.194Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/BeProduct/beproduct-org-nestjs-auth/security/advisories/GHSA-6xwp-cp5h-q856",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/BeProduct/beproduct-org-nestjs-auth/security/advisories/GHSA-6xwp-cp5h-q856"
},
{
"name": "https://www.aikido.dev/blog/checklist-github-actions",
"tags": [
"x_refsource_MISC"
],
"url": "https://www.aikido.dev/blog/checklist-github-actions"
},
{
"name": "https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised",
"tags": [
"x_refsource_MISC"
],
"url": "https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised"
}
],
"source": {
"advisory": "GHSA-6xwp-cp5h-q856",
"discovery": "UNKNOWN"
},
"title": "Malicious code in @beproduct/nestjs-auth (0.1.2 through 0.1.19) \u2014 Mini Shai-Hulud worm"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-46412",
"datePublished": "2026-07-20T14:31:53.194Z",
"dateReserved": "2026-05-13T21:04:10.933Z",
"dateUpdated": "2026-07-20T15:32:29.327Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-45321 (GCVE-0-2026-45321)
Vulnerability from nvd – Published: 2026-05-12 00:12 – Updated: 2026-05-28 03:55Title
Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys
Summary
On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across 42 @tanstack/* packages were published to the npm registry. The publishes were authenticated via the legitimate GitHub Actions OIDC trusted-publisher binding for TanStack/router, but the publish workflow itself was not modified. The attacker chained three known vulnerability classes — a pull_request_target "Pwn Request" misconfiguration, GitHub Actions cache poisoning across the fork↔base trust boundary, and runtime memory extraction of the OIDC token from the Actions runner process — to publish credential-stealing malware under a trusted identity. Each affected package received exactly two malicious versions, published a few minutes apart.
Severity
9.6 (Critical)
SSVC
Exploitation: active
Automatable: no
Technical Impact: total
CISA Coordinator (v2.0.3)
CWE
- CWE-506 - Embedded Malicious Code
Assigner
References
5 references
| URL | Tags |
|---|---|
| https://github.com/TanStack/router/security/advis… | x_refsource_CONFIRM |
| https://github.com/TanStack/router/issues/7383 | x_refsource_MISC |
| https://tanstack.com/blog/npm-supply-chain-compro… | x_refsource_MISC |
| https://www.stepsecurity.io/blog/mini-shai-hulud-… | x_refsource_MISC |
| https://www.cisa.gov/known-exploited-vulnerabilit… | government-resource |
Impacted products
42 products
| Vendor | Product | Version | |
|---|---|---|---|
| @tanstack | arktype-adapter |
Affected:
1.166.12
Affected: 1.166.15 |
|
| @tanstack | eslint-plugin-router |
Affected:
1.161.9
Affected: 1.161.12 |
|
| @tanstack | eslint-plugin-start |
Affected:
0.0.4
Affected: 0.0.7 |
|
| @tanstack | history |
Affected:
1.161.9
Affected: 1.161.12 |
|
| @tanstack | nitro-v2-vite-plugin |
Affected:
1.154.12
Affected: 1.154.15 |
|
| @tanstack | react-router |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | react-router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | react-router-ssr-query |
Affected:
1.166.15
Affected: 1.166.18 |
|
| @tanstack | react-start |
Affected:
1.167.68
Affected: 1.167.71 |
|
| @tanstack | react-start-client |
Affected:
1.166.51
Affected: 1.166.54 |
|
| @tanstack | react-start-rsc |
Affected:
0.0.47
Affected: 0.0.50 |
|
| @tanstack | react-start-server |
Affected:
1.166.55
Affected: 1.166.58 |
|
| @tanstack | router-cli |
Affected:
1.166.46
Affected: 1.166.49 |
|
| @tanstack | router-core |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | router-devtools-core |
Affected:
1.167.6
Affected: 1.167.9 |
|
| @tanstack | router-generator |
Affected:
1.166.45
Affected: 1.166.48 |
|
| @tanstack | router-plugin |
Affected:
1.167.38
Affected: 1.167.41 |
|
| @tanstack | router-ssr-query-core |
Affected:
1.168.3
Affected: 1.168.6 |
|
| @tanstack | router-utils |
Affected:
1.161.11
Affected: 1.161.14 |
|
| @tanstack | outer-vite-plugin |
Affected:
1.166.53
Affected: 1.166.56 |
|
| @tanstack | solid-router |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | solid-router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | solid-router-ssr-query |
Affected:
1.166.15
Affected: 1.166.18 |
|
| @tanstack | solid-start |
Affected:
1.167.65
Affected: 1.167.68 |
|
| @tanstack | solid-start-client |
Affected:
1.166.50
Affected: 1.166.53 |
|
| @tanstack | solid-start-server |
Affected:
1.166.54
Affected: 1.166.57 |
|
| @tanstack | start-client-core |
Affected:
1.168.5
Affected: 1.168.8 |
|
| @tanstack | start-fn-stubs |
Affected:
1.161.9
Affected: 1.161.12 |
|
| @tanstack | start-plugin-core |
Affected:
1.169.23
Affected: 1.169.26 |
|
| @tanstack | start-server-core |
Affected:
1.167.33
Affected: 1.167.36 |
|
| @tanstack | start-static-server-functions |
Affected:
1.166.44
Affected: 1.166.47 |
|
| @tanstack | start-storage-context |
Affected:
1.166.38
Affected: 1.166.41 |
|
| @tanstack | valibot-adapter |
Affected:
1.166.12
Affected: 1.166.15 |
|
| @tanstack | virtual-file-routes |
Affected:
1.161.10
Affected: 1.161.13 |
|
| @tanstack | vue-router |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | vue-router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | vue-router-ssr-query |
Affected:
1.166.15
Affected: 1.166.18 |
|
| @tanstack | vue-start |
Affected:
1.167.61
Affected: 1.167.64 |
|
| @tanstack | vue-start-client |
Affected:
1.166.46
Affected: 1.166.49 |
|
| @tanstack | vue-start-server |
Affected:
1.166.50
Affected: 1.166.53 |
|
| @tanstack | zod-adapter |
Affected:
1.166.12
Affected: 1.166.15 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-45321",
"options": [
{
"Exploitation": "active"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-05-27T00:00:00+00:00",
"version": "2.0.3"
},
"type": "ssvc"
}
},
{
"other": {
"content": {
"dateAdded": "2026-05-27",
"reference": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321"
},
"type": "kev"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-05-28T03:55:26.991Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"government-resource"
],
"url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321"
}
],
"timeline": [
{
"lang": "en",
"time": "2026-05-27T00:00:00.000Z",
"value": "CVE-2026-45321 added to CISA KEV"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "arktype-adapter",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.12"
},
{
"status": "affected",
"version": "1.166.15"
}
]
},
{
"product": "eslint-plugin-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.9"
},
{
"status": "affected",
"version": "1.161.12"
}
]
},
{
"product": "eslint-plugin-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "0.0.4"
},
{
"status": "affected",
"version": "0.0.7"
}
]
},
{
"product": "history",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.9"
},
{
"status": "affected",
"version": "1.161.12"
}
]
},
{
"product": "nitro-v2-vite-plugin",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.154.12"
},
{
"status": "affected",
"version": "1.154.15"
}
]
},
{
"product": "react-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "react-router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "react-router-ssr-query",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.15"
},
{
"status": "affected",
"version": "1.166.18"
}
]
},
{
"product": "react-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.68"
},
{
"status": "affected",
"version": "1.167.71"
}
]
},
{
"product": "react-start-client",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.51"
},
{
"status": "affected",
"version": "1.166.54"
}
]
},
{
"product": "react-start-rsc",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "0.0.47"
},
{
"status": "affected",
"version": "0.0.50"
}
]
},
{
"product": "react-start-server",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.55"
},
{
"status": "affected",
"version": "1.166.58"
}
]
},
{
"product": "router-cli",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.46"
},
{
"status": "affected",
"version": "1.166.49"
}
]
},
{
"product": "router-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "router-devtools-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.6"
},
{
"status": "affected",
"version": "1.167.9"
}
]
},
{
"product": "router-generator",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.45"
},
{
"status": "affected",
"version": "1.166.48"
}
]
},
{
"product": "router-plugin",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.38"
},
{
"status": "affected",
"version": "1.167.41"
}
]
},
{
"product": "router-ssr-query-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.168.3"
},
{
"status": "affected",
"version": "1.168.6"
}
]
},
{
"product": "router-utils",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.11"
},
{
"status": "affected",
"version": "1.161.14"
}
]
},
{
"product": "outer-vite-plugin",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.53"
},
{
"status": "affected",
"version": "1.166.56"
}
]
},
{
"product": "solid-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "solid-router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "solid-router-ssr-query",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.15"
},
{
"status": "affected",
"version": "1.166.18"
}
]
},
{
"product": "solid-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.65"
},
{
"status": "affected",
"version": "1.167.68"
}
]
},
{
"product": "solid-start-client",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.50"
},
{
"status": "affected",
"version": "1.166.53"
}
]
},
{
"product": "solid-start-server",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.54"
},
{
"status": "affected",
"version": "1.166.57"
}
]
},
{
"product": "start-client-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.168.5"
},
{
"status": "affected",
"version": "1.168.8"
}
]
},
{
"product": "start-fn-stubs",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.9"
},
{
"status": "affected",
"version": "1.161.12"
}
]
},
{
"product": "start-plugin-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.23"
},
{
"status": "affected",
"version": "1.169.26"
}
]
},
{
"product": "start-server-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.33"
},
{
"status": "affected",
"version": "1.167.36"
}
]
},
{
"product": "start-static-server-functions",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.44"
},
{
"status": "affected",
"version": "1.166.47"
}
]
},
{
"product": "start-storage-context",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.38"
},
{
"status": "affected",
"version": "1.166.41"
}
]
},
{
"product": "valibot-adapter",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.12"
},
{
"status": "affected",
"version": "1.166.15"
}
]
},
{
"product": "virtual-file-routes",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.10"
},
{
"status": "affected",
"version": "1.161.13"
}
]
},
{
"product": "vue-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "vue-router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "vue-router-ssr-query",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.15"
},
{
"status": "affected",
"version": "1.166.18"
}
]
},
{
"product": "vue-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.61"
},
{
"status": "affected",
"version": "1.167.64"
}
]
},
{
"product": "vue-start-client",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.46"
},
{
"status": "affected",
"version": "1.166.49"
}
]
},
{
"product": "vue-start-server",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.50"
},
{
"status": "affected",
"version": "1.166.53"
}
]
},
{
"product": "zod-adapter",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.12"
},
{
"status": "affected",
"version": "1.166.15"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across 42 @tanstack/* packages were published to the npm registry. The publishes were authenticated via the legitimate GitHub Actions OIDC trusted-publisher binding for TanStack/router, but the publish workflow itself was not modified. The attacker chained three known vulnerability classes \u2014 a pull_request_target \"Pwn Request\" misconfiguration, GitHub Actions cache poisoning across the fork\u2194base trust boundary, and runtime memory extraction of the OIDC token from the Actions runner process \u2014 to publish credential-stealing malware under a trusted identity. Each affected package received exactly two malicious versions, published a few minutes apart."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 9.6,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-506",
"description": "CWE-506: Embedded Malicious Code",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-05-12T15:16:17.354Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx"
},
{
"name": "https://github.com/TanStack/router/issues/7383",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/TanStack/router/issues/7383"
},
{
"name": "https://tanstack.com/blog/npm-supply-chain-compromise-postmortem",
"tags": [
"x_refsource_MISC"
],
"url": "https://tanstack.com/blog/npm-supply-chain-compromise-postmortem"
},
{
"name": "https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem",
"tags": [
"x_refsource_MISC"
],
"url": "https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem"
}
],
"source": {
"advisory": "GHSA-g7cv-rxg3-hmpx",
"discovery": "UNKNOWN"
},
"title": "Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-45321",
"datePublished": "2026-05-12T00:12:35.452Z",
"dateReserved": "2026-05-11T20:50:30.539Z",
"dateUpdated": "2026-05-28T03:55:26.991Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-46412 (GCVE-0-2026-46412)
Vulnerability from cvelistv5 – Published: 2026-07-20 14:31 – Updated: 2026-07-20 15:32
VLAI
EPSS
VEX
Title
Malicious code in @beproduct/nestjs-auth (0.1.2 through 0.1.19) — Mini Shai-Hulud worm
Summary
@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `>=0.1.2 <=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes.
Severity
10 (Critical)
SSVC
Exploitation: none
Automatable: yes
Technical Impact: total
CISA Coordinator (v2.0.3)
CWE
- CWE-506 - Embedded Malicious Code
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/BeProduct/beproduct-org-nestjs… | x_refsource_CONFIRM |
| https://www.aikido.dev/blog/checklist-github-actions | x_refsource_MISC |
| https://www.aikido.dev/blog/mini-shai-hulud-is-ba… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| BeProduct | beproduct-org-nestjs-auth |
Affected:
>= 0.1.2, <= 0.1.19
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-46412",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-20T15:32:17.643031Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-20T15:32:29.327Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "beproduct-org-nestjs-auth",
"vendor": "BeProduct",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.1.2, \u003c= 0.1.19"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `\u003e=0.1.2 \u003c=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 10,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-506",
"description": "CWE-506: Embedded Malicious Code",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-07-20T14:31:53.194Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/BeProduct/beproduct-org-nestjs-auth/security/advisories/GHSA-6xwp-cp5h-q856",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/BeProduct/beproduct-org-nestjs-auth/security/advisories/GHSA-6xwp-cp5h-q856"
},
{
"name": "https://www.aikido.dev/blog/checklist-github-actions",
"tags": [
"x_refsource_MISC"
],
"url": "https://www.aikido.dev/blog/checklist-github-actions"
},
{
"name": "https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised",
"tags": [
"x_refsource_MISC"
],
"url": "https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised"
}
],
"source": {
"advisory": "GHSA-6xwp-cp5h-q856",
"discovery": "UNKNOWN"
},
"title": "Malicious code in @beproduct/nestjs-auth (0.1.2 through 0.1.19) \u2014 Mini Shai-Hulud worm"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-46412",
"datePublished": "2026-07-20T14:31:53.194Z",
"dateReserved": "2026-05-13T21:04:10.933Z",
"dateUpdated": "2026-07-20T15:32:29.327Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-45321 (GCVE-0-2026-45321)
Vulnerability from cvelistv5 – Published: 2026-05-12 00:12 – Updated: 2026-05-28 03:55Title
Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys
Summary
On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across 42 @tanstack/* packages were published to the npm registry. The publishes were authenticated via the legitimate GitHub Actions OIDC trusted-publisher binding for TanStack/router, but the publish workflow itself was not modified. The attacker chained three known vulnerability classes — a pull_request_target "Pwn Request" misconfiguration, GitHub Actions cache poisoning across the fork↔base trust boundary, and runtime memory extraction of the OIDC token from the Actions runner process — to publish credential-stealing malware under a trusted identity. Each affected package received exactly two malicious versions, published a few minutes apart.
Severity
9.6 (Critical)
SSVC
Exploitation: active
Automatable: no
Technical Impact: total
CISA Coordinator (v2.0.3)
CWE
- CWE-506 - Embedded Malicious Code
Assigner
References
5 references
| URL | Tags |
|---|---|
| https://github.com/TanStack/router/security/advis… | x_refsource_CONFIRM |
| https://github.com/TanStack/router/issues/7383 | x_refsource_MISC |
| https://tanstack.com/blog/npm-supply-chain-compro… | x_refsource_MISC |
| https://www.stepsecurity.io/blog/mini-shai-hulud-… | x_refsource_MISC |
| https://www.cisa.gov/known-exploited-vulnerabilit… | government-resource |
Impacted products
42 products
| Vendor | Product | Version | |
|---|---|---|---|
| @tanstack | arktype-adapter |
Affected:
1.166.12
Affected: 1.166.15 |
|
| @tanstack | eslint-plugin-router |
Affected:
1.161.9
Affected: 1.161.12 |
|
| @tanstack | eslint-plugin-start |
Affected:
0.0.4
Affected: 0.0.7 |
|
| @tanstack | history |
Affected:
1.161.9
Affected: 1.161.12 |
|
| @tanstack | nitro-v2-vite-plugin |
Affected:
1.154.12
Affected: 1.154.15 |
|
| @tanstack | react-router |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | react-router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | react-router-ssr-query |
Affected:
1.166.15
Affected: 1.166.18 |
|
| @tanstack | react-start |
Affected:
1.167.68
Affected: 1.167.71 |
|
| @tanstack | react-start-client |
Affected:
1.166.51
Affected: 1.166.54 |
|
| @tanstack | react-start-rsc |
Affected:
0.0.47
Affected: 0.0.50 |
|
| @tanstack | react-start-server |
Affected:
1.166.55
Affected: 1.166.58 |
|
| @tanstack | router-cli |
Affected:
1.166.46
Affected: 1.166.49 |
|
| @tanstack | router-core |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | router-devtools-core |
Affected:
1.167.6
Affected: 1.167.9 |
|
| @tanstack | router-generator |
Affected:
1.166.45
Affected: 1.166.48 |
|
| @tanstack | router-plugin |
Affected:
1.167.38
Affected: 1.167.41 |
|
| @tanstack | router-ssr-query-core |
Affected:
1.168.3
Affected: 1.168.6 |
|
| @tanstack | router-utils |
Affected:
1.161.11
Affected: 1.161.14 |
|
| @tanstack | outer-vite-plugin |
Affected:
1.166.53
Affected: 1.166.56 |
|
| @tanstack | solid-router |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | solid-router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | solid-router-ssr-query |
Affected:
1.166.15
Affected: 1.166.18 |
|
| @tanstack | solid-start |
Affected:
1.167.65
Affected: 1.167.68 |
|
| @tanstack | solid-start-client |
Affected:
1.166.50
Affected: 1.166.53 |
|
| @tanstack | solid-start-server |
Affected:
1.166.54
Affected: 1.166.57 |
|
| @tanstack | start-client-core |
Affected:
1.168.5
Affected: 1.168.8 |
|
| @tanstack | start-fn-stubs |
Affected:
1.161.9
Affected: 1.161.12 |
|
| @tanstack | start-plugin-core |
Affected:
1.169.23
Affected: 1.169.26 |
|
| @tanstack | start-server-core |
Affected:
1.167.33
Affected: 1.167.36 |
|
| @tanstack | start-static-server-functions |
Affected:
1.166.44
Affected: 1.166.47 |
|
| @tanstack | start-storage-context |
Affected:
1.166.38
Affected: 1.166.41 |
|
| @tanstack | valibot-adapter |
Affected:
1.166.12
Affected: 1.166.15 |
|
| @tanstack | virtual-file-routes |
Affected:
1.161.10
Affected: 1.161.13 |
|
| @tanstack | vue-router |
Affected:
1.169.5
Affected: 1.169.8 |
|
| @tanstack | vue-router-devtools |
Affected:
1.166.16
Affected: 1.166.19 |
|
| @tanstack | vue-router-ssr-query |
Affected:
1.166.15
Affected: 1.166.18 |
|
| @tanstack | vue-start |
Affected:
1.167.61
Affected: 1.167.64 |
|
| @tanstack | vue-start-client |
Affected:
1.166.46
Affected: 1.166.49 |
|
| @tanstack | vue-start-server |
Affected:
1.166.50
Affected: 1.166.53 |
|
| @tanstack | zod-adapter |
Affected:
1.166.12
Affected: 1.166.15 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-45321",
"options": [
{
"Exploitation": "active"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-05-27T00:00:00+00:00",
"version": "2.0.3"
},
"type": "ssvc"
}
},
{
"other": {
"content": {
"dateAdded": "2026-05-27",
"reference": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321"
},
"type": "kev"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-05-28T03:55:26.991Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"government-resource"
],
"url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321"
}
],
"timeline": [
{
"lang": "en",
"time": "2026-05-27T00:00:00.000Z",
"value": "CVE-2026-45321 added to CISA KEV"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "arktype-adapter",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.12"
},
{
"status": "affected",
"version": "1.166.15"
}
]
},
{
"product": "eslint-plugin-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.9"
},
{
"status": "affected",
"version": "1.161.12"
}
]
},
{
"product": "eslint-plugin-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "0.0.4"
},
{
"status": "affected",
"version": "0.0.7"
}
]
},
{
"product": "history",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.9"
},
{
"status": "affected",
"version": "1.161.12"
}
]
},
{
"product": "nitro-v2-vite-plugin",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.154.12"
},
{
"status": "affected",
"version": "1.154.15"
}
]
},
{
"product": "react-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "react-router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "react-router-ssr-query",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.15"
},
{
"status": "affected",
"version": "1.166.18"
}
]
},
{
"product": "react-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.68"
},
{
"status": "affected",
"version": "1.167.71"
}
]
},
{
"product": "react-start-client",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.51"
},
{
"status": "affected",
"version": "1.166.54"
}
]
},
{
"product": "react-start-rsc",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "0.0.47"
},
{
"status": "affected",
"version": "0.0.50"
}
]
},
{
"product": "react-start-server",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.55"
},
{
"status": "affected",
"version": "1.166.58"
}
]
},
{
"product": "router-cli",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.46"
},
{
"status": "affected",
"version": "1.166.49"
}
]
},
{
"product": "router-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "router-devtools-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.6"
},
{
"status": "affected",
"version": "1.167.9"
}
]
},
{
"product": "router-generator",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.45"
},
{
"status": "affected",
"version": "1.166.48"
}
]
},
{
"product": "router-plugin",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.38"
},
{
"status": "affected",
"version": "1.167.41"
}
]
},
{
"product": "router-ssr-query-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.168.3"
},
{
"status": "affected",
"version": "1.168.6"
}
]
},
{
"product": "router-utils",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.11"
},
{
"status": "affected",
"version": "1.161.14"
}
]
},
{
"product": "outer-vite-plugin",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.53"
},
{
"status": "affected",
"version": "1.166.56"
}
]
},
{
"product": "solid-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "solid-router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "solid-router-ssr-query",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.15"
},
{
"status": "affected",
"version": "1.166.18"
}
]
},
{
"product": "solid-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.65"
},
{
"status": "affected",
"version": "1.167.68"
}
]
},
{
"product": "solid-start-client",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.50"
},
{
"status": "affected",
"version": "1.166.53"
}
]
},
{
"product": "solid-start-server",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.54"
},
{
"status": "affected",
"version": "1.166.57"
}
]
},
{
"product": "start-client-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.168.5"
},
{
"status": "affected",
"version": "1.168.8"
}
]
},
{
"product": "start-fn-stubs",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.9"
},
{
"status": "affected",
"version": "1.161.12"
}
]
},
{
"product": "start-plugin-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.23"
},
{
"status": "affected",
"version": "1.169.26"
}
]
},
{
"product": "start-server-core",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.33"
},
{
"status": "affected",
"version": "1.167.36"
}
]
},
{
"product": "start-static-server-functions",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.44"
},
{
"status": "affected",
"version": "1.166.47"
}
]
},
{
"product": "start-storage-context",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.38"
},
{
"status": "affected",
"version": "1.166.41"
}
]
},
{
"product": "valibot-adapter",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.12"
},
{
"status": "affected",
"version": "1.166.15"
}
]
},
{
"product": "virtual-file-routes",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.161.10"
},
{
"status": "affected",
"version": "1.161.13"
}
]
},
{
"product": "vue-router",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.169.5"
},
{
"status": "affected",
"version": "1.169.8"
}
]
},
{
"product": "vue-router-devtools",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.16"
},
{
"status": "affected",
"version": "1.166.19"
}
]
},
{
"product": "vue-router-ssr-query",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.15"
},
{
"status": "affected",
"version": "1.166.18"
}
]
},
{
"product": "vue-start",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.167.61"
},
{
"status": "affected",
"version": "1.167.64"
}
]
},
{
"product": "vue-start-client",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.46"
},
{
"status": "affected",
"version": "1.166.49"
}
]
},
{
"product": "vue-start-server",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.50"
},
{
"status": "affected",
"version": "1.166.53"
}
]
},
{
"product": "zod-adapter",
"vendor": "@tanstack",
"versions": [
{
"status": "affected",
"version": "1.166.12"
},
{
"status": "affected",
"version": "1.166.15"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across 42 @tanstack/* packages were published to the npm registry. The publishes were authenticated via the legitimate GitHub Actions OIDC trusted-publisher binding for TanStack/router, but the publish workflow itself was not modified. The attacker chained three known vulnerability classes \u2014 a pull_request_target \"Pwn Request\" misconfiguration, GitHub Actions cache poisoning across the fork\u2194base trust boundary, and runtime memory extraction of the OIDC token from the Actions runner process \u2014 to publish credential-stealing malware under a trusted identity. Each affected package received exactly two malicious versions, published a few minutes apart."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 9.6,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-506",
"description": "CWE-506: Embedded Malicious Code",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-05-12T15:16:17.354Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx"
},
{
"name": "https://github.com/TanStack/router/issues/7383",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/TanStack/router/issues/7383"
},
{
"name": "https://tanstack.com/blog/npm-supply-chain-compromise-postmortem",
"tags": [
"x_refsource_MISC"
],
"url": "https://tanstack.com/blog/npm-supply-chain-compromise-postmortem"
},
{
"name": "https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem",
"tags": [
"x_refsource_MISC"
],
"url": "https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem"
}
],
"source": {
"advisory": "GHSA-g7cv-rxg3-hmpx",
"discovery": "UNKNOWN"
},
"title": "Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-45321",
"datePublished": "2026-05-12T00:12:35.452Z",
"dateReserved": "2026-05-11T20:50:30.539Z",
"dateUpdated": "2026-05-28T03:55:26.991Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}