{"basis":"claimed","id":"CVE-2026-102989","name":"TanStack Router: Unauthenticated reflected XSS in TanStack Start server-function responses","vendorProject":"TanStack","product":"router","publishedAt":"2026-10-13","cvss":{"score":9.3,"severity":"CRITICAL","version":"3.1"},"exploited":null,"epss":{"score":0.00544,"percentile":0.45659,"date":"2026-11-02"},"coverage":{"cloudflare":{"status":"blocks","firstOn":"2026-10-12","daysToRule":-1},"aws":{"status":"none","firstOn":null,"daysToRule":null},"azure":{"status":"none","firstOn":null,"daysToRule":null},"google":{"status":"none","firstOn":null,"daysToRule":null},"fastly":{"status":"none","firstOn":null,"daysToRule":null},"f5":{"status":"none","firstOn":null,"daysToRule":null},"akamai":{"status":"no_source","firstOn":null,"daysToRule":null},"crs":{"status":"none","firstOn":null,"daysToRule":null}},"title":"TanStack Router: Unauthenticated reflected XSS in TanStack Start server-function responses","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.","cwes":["CWE-79"],"vendors":[{"vendor":"cloudflare","status":"blocks","basis":"claimed","firstOn":"2026-10-12","firstIsNew":true,"daysToRule":-1,"daysAtMost":null,"freePlan":false,"claims":[{"id":"eefc11b434caedb3c2701e00ac5bff43f44715aef584aaf017f829f8578fcc4d","cve_id":"CVE-2026-102989","vendor":"cloudflare","product":"Cloudflare Managed Ruleset","rule_id":"22220c5e2682463daa5536214ee560b2","rule_name":"TanStack - Reflected XSS - CVE:CVE-2026-102989","change":"new","default_action":"Block","published_on":"2026-10-12","source_url":"https://developers.cloudflare.com/changelog/post/2026-10-12-waf-release/","source_title":"WAF Release - 2026-10-12","excerpt":"TanStack - Reflected XSS - CVE:CVE-2026-102989. Previous action: N/A. New action: Block. This is a new detection.","first_seen_at":"2026-11-02T21:00:15.176Z"}]},{"vendor":"aws","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"azure","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"google","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"fastly","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"f5","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"akamai","status":"no_source","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"crs","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]}],"updatedAt":"2026-11-02T21:17:16.518Z","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N","ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"total"},"measured":[],"social":{"total":0,"first_seen":null,"daily":[{"day":"2026-10-21","posts":0},{"day":"2026-10-22","posts":0},{"day":"2026-10-23","posts":0},{"day":"2026-10-24","posts":0},{"day":"2026-10-25","posts":0},{"day":"2026-10-26","posts":0},{"day":"2026-10-27","posts":0},{"day":"2026-10-28","posts":0},{"day":"2026-10-29","posts":0},{"day":"2026-10-30","posts":0},{"day":"2026-10-31","posts":0},{"day":"2026-11-01","posts":0},{"day":"2026-11-02","posts":0},{"day":"2026-11-03","posts":0}],"top_posts":[],"exploit_repositories":[]}}