CVE-2026-102989

TanStack Router: Unauthenticated reflected XSS in TanStack Start server-function responses

At a glance

Severity
CRITICAL 9.3
EPSS
EPSS 0.54 % · percentile 45 (2026-10-27)
State
PUBLISHED
Published
Updated
Assigner
GitHub_M
NVD status
Awaiting Analysis

Description

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.

Scores

VersionScoreVectorScored by
CVSS 3.1CRITICAL 9.3CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:NGitHub_M
CVSS 3.1CRITICAL 9.3CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:NNVD · security-advisories@github.com (Secondary)

Weaknesses (CWE)

Advisories

European references

Affected products

ProductVersions
TanStack · routeraffected < release-2026-09-30-1747
@tanstack · react-startaffected >= 1.143.12, < 1.168.60
@tanstack · solid-startaffected >= 1.143.12, < 1.168.57
@tanstack · start-server-coreaffected >= 1.143.12, < 1.169.39
@tanstack · vue-startaffected >= 1.143.12, < 1.168.56

References

Sources

SourceLicence
CVE List (CVEProject cvelistV5)CVE Program Terms of Use
EPSS (FIRST.org)FIRST — attribution requested
ENISA EUVDENISA — reproduction authorised, source acknowledged
NVD (NIST) via fkie-cad/nvd-json-data-feedsPublic domain — this product uses data from the NVD API but is not endorsed or certified by the NVD