{"id":"CVE-2026-102989","published":"2026-10-13T17:17:14Z","modified":"2026-10-16T16:00:33Z","title":"TanStack Router is a client-first, server-capable, fully type-safe router and full-stack framework for the web","vendor":"TanStack","product":"router","tier":"core","eol":null,"description":{"text":"TanStack Router is a client-first, server-capable, fully type-safe router and full-stack framework for the web. From 1.143.12 until 1.169.39 for @tanstack/start-server-core, 1.168.60 for @tanstack/react-start, 1.168.57 for @tanstack/solid-start, and 1.168.56 for @tanstack/vue-start, an unauthenticated attacker can place non-public fields in a server-function request payload so that attacker-controlled middleware state reaches the error path and a response-shaped object is accepted as an HTTP response. A crafted server-function URL can therefore return attacker-controlled HTML from the application's origin; when a visitor opens the URL, the injected script can access same-origin data and issue requests with the visitor's authority. This issue is fixed in @tanstack/start-server-core 1.169.39, @tanstack/react-start 1.168.60, @tanstack/solid-start 1.168.57, and @tanstack/vue-start 1.168.56.","provenance":"source","from":"NVD"},"summary":null,"cvss":{"score":9.3,"severity":"CRITICAL","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N","provenance":"source","from":"NVD"},"epss":{"score":0.00544,"percentile":0.45589,"date":"2026-10-29","provenance":"source"},"kev":null,"vulncheckKev":null,"exploited":false,"otx":{"pulseCount":8,"pulses":[{"name":"Known_Cve | Oct 22, 2026 | Part 1/4","url":"https://otx.alienvault.com/pulse/6ad8d340ce8bef7ffa79b89b","created":"2026-10-21"},{"name":"Known_Cve | Oct 21, 2026 | Part 2/4","url":"https://otx.alienvault.com/pulse/6ad7813c340f998d3db4d0bb","created":"2026-10-20"},{"name":"Known_Cve | Oct 20, 2026 | Part 2/4","url":"https://otx.alienvault.com/pulse/6ad62f708ed98220bccde9c8","created":"2026-10-19"},{"name":"Known_Cve | Oct 19, 2026 | Part 2/4","url":"https://otx.alienvault.com/pulse/6ad4ddae89608f8a66f58915","created":"2026-10-18"},{"name":"Known_Cve | Oct 18, 2026 | Part 2/4","url":"https://otx.alienvault.com/pulse/6ad38c2e0aa0d5de6ee8bb52","created":"2026-10-17"},{"name":"Known_Cve | Oct 17, 2026 | Part 2/4","url":"https://otx.alienvault.com/pulse/6ad23ab69d40bd72818ecdae","created":"2026-10-16"},{"name":"Known_Cve | Oct 16, 2026 | Part 2/3","url":"https://otx.alienvault.com/pulse/6ad0e93a078e6220a69919cf","created":"2026-10-15"},{"name":"Known_Cve | Oct 15, 2026 | Part 2/3","url":"https://otx.alienvault.com/pulse/6acf9878b4135e4a2037eb34","created":"2026-10-14"}],"provenance":"machine"},"cwes":[{"id":"CWE-79","name":"Improper Neutralization of Input During Web Page Generation"}],"references":[{"url":"https://github.com/TanStack/router/commit/d521abd71c69f1ff010bb3def4d417cb5fa058cb","tags":[]},{"url":"https://github.com/TanStack/router/pull/8573","tags":[]},{"url":"https://github.com/TanStack/router/releases/tag/release-2026-09-30-1747","tags":[]},{"url":"https://github.com/TanStack/router/security/advisories/GHSA-qx66-fv34-fjm8","tags":[]}],"techniques":[],"reports":[],"affected":[{"ecosystem":"npm","package":"@tanstack/start-server-core","vulnerableRanges":[">=1.143.12, <1.169.39"],"patched":["1.169.39"],"from":["GHSA-qx66-fv34-fjm8"],"provenance":"source"},{"ecosystem":"npm","package":"@tanstack/react-start","vulnerableRanges":[">=1.143.12, <1.168.60"],"patched":["1.168.60"],"from":["GHSA-qx66-fv34-fjm8"],"provenance":"source"},{"ecosystem":"npm","package":"@tanstack/solid-start","vulnerableRanges":[">=1.143.12, <1.168.57"],"patched":["1.168.57"],"from":["GHSA-qx66-fv34-fjm8"],"provenance":"source"},{"ecosystem":"npm","package":"@tanstack/vue-start","vulnerableRanges":[">=1.143.12, <1.168.56"],"patched":["1.168.56"],"from":["GHSA-qx66-fv34-fjm8"],"provenance":"source"}],"advisories":[{"id":"GHSA-qx66-fv34-fjm8","url":"https://github.com/advisories/GHSA-qx66-fv34-fjm8","severity":"CRITICAL","ecosystem":"npm","package":"@tanstack/start-server-core","vulnerableRanges":[">=1.143.12, <1.169.39"],"patched":["1.169.39"],"provenance":"source","from":"GHSA"},{"id":"GHSA-qx66-fv34-fjm8","url":"https://github.com/advisories/GHSA-qx66-fv34-fjm8","severity":"CRITICAL","ecosystem":"npm","package":"@tanstack/react-start","vulnerableRanges":[">=1.143.12, <1.168.60"],"patched":["1.168.60"],"provenance":"source","from":"GHSA"},{"id":"GHSA-qx66-fv34-fjm8","url":"https://github.com/advisories/GHSA-qx66-fv34-fjm8","severity":"CRITICAL","ecosystem":"npm","package":"@tanstack/solid-start","vulnerableRanges":[">=1.143.12, <1.168.57"],"patched":["1.168.57"],"provenance":"source","from":"GHSA"},{"id":"GHSA-qx66-fv34-fjm8","url":"https://github.com/advisories/GHSA-qx66-fv34-fjm8","severity":"CRITICAL","ecosystem":"npm","package":"@tanstack/vue-start","vulnerableRanges":[">=1.143.12, <1.168.56"],"patched":["1.168.56"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2026-98849","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-98849","exploited":false,"exploitedSince":null,"provenance":"source"},"exploits":[],"exploitSources":null,"exploitRefs":[],"flow":[],"timeline":[{"date":"2026-10-13","kind":"published","label":"Published (NVD)","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102989","provenance":"source"}],"speed":{"daysToPublicExploit":null,"firstExploitFrom":null,"daysToKev":null},"priority":{"score":17.8,"factors":[{"name":"In a KEV catalog","points":0.0,"detail":"not listed"},{"name":"Recent KEV listing","points":0.0,"detail":"not listed"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":9.12,"detail":"percentile 0.4559"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":0.0,"detail":"none found"},{"name":"Mentioned in OTX pulses","points":2.17,"detail":"8 pulses"},{"name":"CVSS severity","points":6.51,"detail":"base score 9.3"},{"name":"End-of-life product","points":0.0,"detail":"supported or unknown"}]},"lineage":{"packageHistory":[{"cve":"CVE-2026-45321","published":"2026-05-12","fixed":"1.167.72","kev":true,"link":{"from":"CVE-2026-45321","to":"CVE-2026-102989","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"npm:@tanstack/react-start","fromFixed":"1.167.72","toFixed":"1.168.60","daysApart":154},{"kind":"version-step","provenance":"source","package":"npm:@tanstack/solid-start","fromFixed":"1.167.69","toFixed":"1.168.57","daysApart":154}]}},{"cve":"CVE-2026-102989","published":"2026-10-13","fixed":"1.168.60","kev":false}],"package":"npm:@tanstack/react-start"}}