incidents/GHSA-g7cv-rxg3-hmpx

GHSA-g7cv-rxg3-hmpx

malwarecritical
published 2026-05-12 00:12:49Zsource github advisory databasepackage @tanstack/react-router-ssr-query +41 more

Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys. 0 of 13 watched services resolved a compromised version; 0 did so while it was still installable; none is reachable from first-party code.

0
services exposed
0
act now
0
resolved while live
49
maintainer packages
0
look-alike names
0
unscanned
blast radiusversion → dependency → lockfile → service

no watched service resolves an affected version — nothing to draw

  • lockfile resolved while installable
  • L2 act now
  • L1 imported
  • L0 present only
  • unscanned
Q1

Which of my services are exposed, and at what level?

0 services
0 act now
L2 act now 0L1 imported 0L0 present only 0unscanned 0
serviceverdictlockfilespulled in vialatest commit

no watched service resolved an affected version

notes ·verdict is per service, highest across its lockfiles. unscanned means the service resolves an affected version but its source was not read — not that it is clean.

Membership is exact (RESOLVED = the lockfile's flattened install tree). Explanation paths are the 3 shortest per lockfile, not all of them.

Q2

Which versions were installable, and for how long?

84 versions
84 removed
versionpublished (exact)live untilstate
@tanstack/react-router-ssr-query@1.166.15first2026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-utils@1.161.112026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/history@1.161.92026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/vue-router-ssr-query@1.166.152026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/solid-start-client@1.166.502026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/solid-router-ssr-query@1.166.152026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/react-router-devtools@1.166.162026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/vue-router-devtools@1.166.162026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/react-start-client@1.166.512026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/arktype-adapter@1.166.122026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/valibot-adapter@1.166.122026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/start-fn-stubs@1.161.92026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/solid-start-server@1.166.542026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/solid-router-devtools@1.166.162026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/zod-adapter@1.166.122026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/vue-start-client@1.166.462026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/nitro-v2-vite-plugin@1.154.122026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/start-storage-context@1.166.382026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-vite-plugin@1.166.532026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-devtools@1.166.162026-05-11 19:20:39Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/vue-start-server@1.166.502026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-ssr-query-core@1.168.32026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/virtual-file-routes@1.161.102026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/vue-start@1.167.612026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/start-server-core@1.167.332026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/react-start-server@1.166.552026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-devtools-core@1.167.62026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-cli@1.166.462026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/start-static-server-functions@1.166.442026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/eslint-plugin-router@1.161.92026-05-11 19:20:40Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/solid-start@1.167.652026-05-11 19:20:41Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/react-start-rsc@0.0.472026-05-11 19:20:41Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/eslint-plugin-start@0.0.42026-05-11 19:20:41Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-generator@1.166.452026-05-11 19:20:41Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-plugin@1.167.382026-05-11 19:20:41Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/start-client-core@1.168.52026-05-11 19:20:41Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/react-start@1.167.682026-05-11 19:20:42Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/vue-router@1.169.52026-05-11 19:20:42Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/router-core@1.169.52026-05-11 19:20:42Z2026-05-12 00:12:49Zupper boundremoved
@tanstack/react-router@1.169.52026-05-11 19:20:42Z2026-05-12 00:12:49Zupper boundremoved

notes ·live_to is an upper bound: npm publishes no takedown time; we use min(next surviving publish, advisory published).

Q3

Who pulled it in while it was still installable?

0 in window
0 pin removed
19:0020:0021:0022:0023:0000:0001:00@tanstack/react-router-ssr-query@1.166.15 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-utils@1.161.11 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/history@1.161.9 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-router-ssr-query@1.166.15 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-start-client@1.166.50 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-router-ssr-query@1.166.15 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-router-devtools@1.166.16 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-router-devtools@1.166.16 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start-client@1.166.51 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/arktype-adapter@1.166.12 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/valibot-adapter@1.166.12 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-fn-stubs@1.161.9 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-start-server@1.166.54 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-router-devtools@1.166.16 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/zod-adapter@1.166.12 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-start-client@1.166.46 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/nitro-v2-vite-plugin@1.154.12 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-storage-context@1.166.38 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-vite-plugin@1.166.53 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-devtools@1.166.16 · 2026-05-11T19:20:39+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-start-server@1.166.50 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-ssr-query-core@1.168.3 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/virtual-file-routes@1.161.10 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-start@1.167.61 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-server-core@1.167.33 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start-server@1.166.55 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-devtools-core@1.167.6 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-cli@1.166.46 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-static-server-functions@1.166.44 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/eslint-plugin-router@1.161.9 · 2026-05-11T19:20:40+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-start@1.167.65 · 2026-05-11T19:20:41+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start-rsc@0.0.47 · 2026-05-11T19:20:41+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/eslint-plugin-start@0.0.4 · 2026-05-11T19:20:41+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-generator@1.166.45 · 2026-05-11T19:20:41+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-plugin@1.167.38 · 2026-05-11T19:20:41+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-client-core@1.168.5 · 2026-05-11T19:20:41+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start@1.167.68 · 2026-05-11T19:20:42+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-router@1.169.5 · 2026-05-11T19:20:42+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-core@1.169.5 · 2026-05-11T19:20:42+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-router@1.169.5 · 2026-05-11T19:20:42+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-plugin-core@1.169.23 · 2026-05-11T19:20:43+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-router@1.169.5 · 2026-05-11T19:20:43+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/history@1.161.12 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-router-ssr-query@1.166.18 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-devtools@1.166.19 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-fn-stubs@1.161.12 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-vite-plugin@1.166.56 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-start-client@1.166.49 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-static-server-functions@1.166.47 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-storage-context@1.166.41 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/arktype-adapter@1.166.15 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-router-ssr-query@1.166.18 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/zod-adapter@1.166.15 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start-server@1.166.58 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-router-devtools@1.166.19 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-router-ssr-query@1.166.18 · 2026-05-11T19:26:14+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-start-server@1.166.57 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-ssr-query-core@1.168.6 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-utils@1.161.14 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-router-devtools@1.166.19 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/nitro-v2-vite-plugin@1.154.15 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-start-server@1.166.53 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/valibot-adapter@1.166.15 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-cli@1.166.49 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-start@1.167.64 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-router-devtools@1.166.19 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start-client@1.166.54 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/virtual-file-routes@1.161.13 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-start-client@1.166.53 · 2026-05-11T19:26:15+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/eslint-plugin-start@0.0.7 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start@1.167.71 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-server-core@1.167.36 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-client-core@1.168.8 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/eslint-plugin-router@1.161.12 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-start-rsc@0.0.50 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-devtools-core@1.167.9 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-start@1.167.68 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-generator@1.166.48 · 2026-05-11T19:26:16+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-plugin@1.167.41 · 2026-05-11T19:26:17+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/react-router@1.169.8 · 2026-05-11T19:26:17+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/vue-router@1.169.8 · 2026-05-11T19:26:17+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/start-plugin-core@1.169.26 · 2026-05-11T19:26:18+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/solid-router@1.169.8 · 2026-05-11T19:26:18+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)@tanstack/router-core@1.169.8 · 2026-05-11T19:26:18+00:00 → 2026-05-12T00:12:49+00:00 (upper bound)installable · 84 versionsupper boundadvisory published
  • installable window
  • upper bound · npm publishes no takedown time
  • lockfile resolved in window
  • pins a removed version
  • advisory published
servicelockfileresolved atcommitin windowwindow

no watched lockfile was committed inside the window or pins a removed version

notes ·live_from is exact (npm keeps the publish timestamp after erasing the version). live_to is an upper bound where marked — npm publishes no takedown time.

in_window: the pin was committed while the artifact was installable; it does not prove an install happened. pinned_removed: the lockfile pins a version npm has erased, which is only possible while it was live — commit time is irrelevant.

Q4

What else could the same maintainers reach?

3 maintainers
49 packages
alemtuzlak48 packages2FA unknownkevinvandy48 packages2FA unknowntannerlinsley49 packages2FA unknown
packageweekly downloadsservices that would be reached
chart.js8,491,458
2uptime-kuma, medplum
@tanstack/react-tablenot recorded
1documenso
@tanstack/arktype-adapternot recorded
0none
@tanstack/eslint-plugin-routernot recorded
0none
@tanstack/eslint-plugin-startnot recorded
0none
@tanstack/historynot recorded
0none
@tanstack/nitro-v2-vite-pluginnot recorded
0none
@tanstack/query-corenot recorded
0none
@tanstack/react-querynot recorded
0none
@tanstack/react-routernot recorded
0none
@tanstack/react-router-devtoolsnot recorded
0none
@tanstack/react-startnot recorded
0none
@tanstack/react-start-clientnot recorded
0none
@tanstack/react-start-rscnot recorded
0none
@tanstack/react-start-servernot recorded
0none

limits ·past the computed cap the reach cell reads “— not computed” — never a 0.

49 co-maintained packages; exposure computed for the 12 most downloaded.

twofa / account_created are not exposed by the public npm registry; shown as unknown, never guessed.

'services at risk' = services resolving the co-maintained package today — the exposure IF that package is compromised next, not exposure to this incident.

Q5

Which look-alike names exist?

0 names
0 kinds

no near-names in the ingested corpus across 42 packages

notes ·The corpus is packages present in the ingested graph, so near-neighbours may be legitimate look-alikes; distance and kind are facts, 'typosquat' is a hypothesis.

Q6

What is the blast radius, service by service?

0 services
0 unscanned
act now0
none
resolved while live0
none
present only0
none
unscanned0
none

notes ·0 services · 0 lockfile snapshots · 49 co-maintained packages · composed in 4.59 s

composed
2026-08-16 14:25:50Z · every figure above is read from this report’s own JSON, and each card carries the statement that produced it.

Beyond the watched set

public repositories on GitHub that pin an affected version today, not yet scanned by Reachable
report generated 2026-08-16 14:25:50Zgraph snapshot advisory 657 · lockfile 246 · maintainer 3,028 · package 6,446 · service 13 · version 55,507144 statements · 133 rows · 4.59 s total
engine sha256:db78309a233bbolt://127.0.0.1:7687 · Linux-7.1.8-arch1-3-x86_64-with-glibc2.44

All ms are wall-clock from the Python driver over loopback Bolt; cold = first run after the node was idle, warm = subsequent runs. Both are reported; neither is estimated.