LOWCVSS v4 2.3Vulnerability

CVE-2026-126362

## Summary The `@astrojs/svelte` renderer wraps slotted content passed to Svelte components in an `<astro-slot>` element, and writes the slot name into its `name` attribute without HTML escaping. A slot name containing `"` could end the attribute and inject arbitrary HTML into the page. For example, a page that takes a slot name from the request: ```astro --- import Tabs from '../components/Tabs.svelte'; const tab = Astro.url.searchParams.get('tab'); --- <Tabs client:load active={tab}><div slot={tab}>…</div></Tabs> ``` rendered with a Svelte 5 component that renders its snippets by name: ```svelte <script> let { active, ...snippets } = $props(); </script> {@render snippets[active]?.()} ``` would output a `tab` value such as `x"><img src=x onerror=alert(1)>` as live HTML. ## Impact Reflected cross-site scripting. An attacker who gets a user to open a crafted link can run JavaScript on the site's origin, but only in applications where all of the following are true: - The page passes request-controlled input (such as a query parameter) as a slot name. - The Svelte component is hydrated with a `client:*` directive. For non-hydrated components the slot wrapper is removed from the output, together with its `name` attribute. - The Svelte component renders the attacker-chosen slot, which in practice means a Svelte 5 component that renders snippets by a dynamic name. Components that never render the slot only output Astro's already escaped fallback template. This is the `@astrojs/svelte` counterpart of GHSA-8hv8-536x-4wqp (CVE-2026-50146), which fixed the same issue in `astro` core. The same unescaped value was also used when hydrating the component in the browser. ## Affected versions `@astrojs/svelte` >= 5.7.3, <= 9.1.1. ## Patches Fixed in `@astrojs/svelte` 9.1.2. Slot names are now HTML-escaped in the server renderer and in the client-side hydration code. ## Workarounds Upgrade to `@astrojs/svelte` 9.1.2 or later. Before upgrading, do not use request-con

Properties

Summary
Astro: Reflected XSS via unescaped slot names in @astrojs/svelte
Severity
low
Nvd fetched at
2026-11-14T00:40:25.638091+00:00
Epss score
0.00381
Cvss severity
LOW
Cvss score
2.3
Retrieved at
2026-11-14T00:51:03+00:00
Ghsa published
2026-11-12T22:34:04Z
Source url
https://github.com/advisories/GHSA-f4j9-crrj-867q
Ghsa updated
2026-11-12T22:34:05Z
Ghsa id
GHSA-f4j9-crrj-867q
Last source
FIRST EPSS
Score
2.3
Cvss version
4.0
Cve id
CVE-2026-126362
Cvss vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
First seen by Signal
2026-11-13T00:03:27+00:00
Name
CVE-2026-126362
Is ghsa only
false
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

Related Entities (3)

AFFECTS (1)

→[Software]npm/@astrojs/svelte

VULNERABLE_TO (1)

←[Software]npm/@astrojs/svelte

Related research

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-126362 (CVSS v4 2.3) — Ninja Signal Threat Intelligence | Ninja Signal