GHSA-qx66-fv34-fjm8: XSS

Published Oct 15, 2026
·
Updated

Impact

An unauthenticated attacker can craft a URL to a server function in an affected TanStack Start app. If someone opens the link, the app can return attacker-controlled HTML from its own origin and run the attacker's JavaScript there. The script can access same-origin data available to that visitor and make requests with their authority.

Cause

The server-function transport can pass request payload fields into internal middleware state instead of limiting them to public input fields. A malformed payload can leave an attacker-controlled result in the error path. Response handling can then treat a response-shaped object as an HTTP response.

Affected versions

Published versions of @tanstack/start-server-core, @tanstack/react-start, @tanstack/solid-start, and @tanstack/vue-start from 1.143.12 up to, but not including, their respective patched versions are affected. The patched versions are @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.

Fix

The fix limits client-supplied server-function input to public fields and validates responses at the server boundary. Upgrade to the corresponding patched package version.

Temporary mitigations

For the configured server-function path, usually /serverFn/, an edge or WAF rule can consider blocking requests without the literal x-tsr-serverFn: true header and browser document navigations such as Sec-Fetch-Mode: navigate or Accept: text/html. A restrictive Content Security Policy on server-function responses can provide another browser-side restriction. These are mitigation suggestions, not a complete fix. The header is client-controlled and is not authentication. Test rules against legitimate GET and POST server functions and use a matching version-specific backport where possible.

Credits

Lovable helped us discover and report this issue. We thank them for their help.

Affected Software

4 affected componentsFixes available
npm/@tanstack/vue-start>=1.143.12<1.168.56
1.168.56
npm/@tanstack/solid-start>=1.143.12<1.168.57
1.168.57
npm/@tanstack/react-start>=1.143.12<1.168.60
1.168.60
npm/@tanstack/start-server-core>=1.143.12<1.169.39
1.169.39

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/@tanstack/vue-start to a version that resolves this vulnerability.

    Fixed in 1.168.56
  2. Upgrade

    Upgrade npm/@tanstack/solid-start to a version that resolves this vulnerability.

    Fixed in 1.168.57
  3. Upgrade

    Upgrade npm/@tanstack/react-start to a version that resolves this vulnerability.

    Fixed in 1.168.60
  4. Upgrade

    Upgrade npm/@tanstack/start-server-core to a version that resolves this vulnerability.

    Fixed in 1.169.39
  5. Upgrade

    Upgrade @tanstack/start-server-core to a version that resolves this vulnerability.

    Fixed in 1.169.39
  6. Upgrade

    Upgrade @tanstack/react-start to a version that resolves this vulnerability.

    Fixed in 1.168.60
  7. Upgrade

    Upgrade @tanstack/solid-start to a version that resolves this vulnerability.

    Fixed in 1.168.57
  8. Upgrade

    Upgrade @tanstack/vue-start to a version that resolves this vulnerability.

    Fixed in 1.168.56
  9. Compensating control

    For the configured server-function path, usually /_serverFn/*, use an edge or WAF rule to consider blocking requests without the literal x-tsr-serverFn: true header and browser document navigations such as Sec-Fetch-Mode: navigate or Accept: text/html; test the rule against legitimate GET and POST server functions.

  10. Compensating control

    Apply a restrictive Content Security Policy to server-function responses as an additional browser-side restriction.

Event History

Oct 15, 2026
Advisory Published
via GitHub·08:22 PM
Data Sourced
via GitHub·08:22 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What user interaction is required for exploitation?

An unauthenticated attacker must craft a URL to a server function in an affected application and convince a victim to open it. No attacker authentication is required, but exploitation depends on victim interaction.

2

What can an attacker do in a victim's browser after successful exploitation?

The application can return attacker-controlled HTML from its own origin and execute attacker JavaScript there. That script can access same-origin data available to the victim and make requests using the victim's authority.

3

Which package versions need to be upgraded?

Affected releases begin at version 1.143.12 and continue until the respective patched release: @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. Upgrade each affected package to its listed patched version or later.

4

What does the patch change?

The fix restricts client-supplied server-function input to public fields and validates responses at the server boundary. This prevents request payload fields from being introduced into internal middleware state and prevents response-shaped attacker-controlled objects from being handled as HTTP responses.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203