Medium

Astro: Reflected/Stored XSS via unescaped <script>/<style> tag content in JSX/MDX rendering

  • Disclosed: 22.10.2026
  • Updated: 22.10.2026 20:17

Summary

Astro's JSX and MDX rendering pipeline treated string children of <script> and <style> elements as trusted HTML. When a dynamic value was passed through a JSX expression, such as <script>{value}</script>, an attacker-controlled value containing </script> or </style> could terminate the element and inject arbitrary HTML and JavaScript.

Other JSX expression contexts escaped dynamic strings automatically. This behavior was limited to <script> and <style> children rendered through Astro's astro:jsx renderer, including MDX components.

Details

The affected rendering paths marked all string children of <script> and <style> elements as safe HTML, without distinguishing literal content generated by the compiler from dynamic expression values. An application was vulnerable when attacker-controlled data, such as a query parameter or CMS field, was interpolated directly into one of these elements.

For example, a value containing </script><script>alert(1)</script> passed to <script>{value}</script> was emitted without escaping. The browser interpreted the first closing tag as markup and executed the injected script.

The fix preserves raw rendering for literal script and style content while escaping dynamic string children like other JSX expression values.

Impact

Affected applications could be vulnerable to reflected or stored cross-site scripting. Exploitation required an application to pass attacker-controlled data directly as a dynamic child of a <script> or <style> element in MDX or through the astro:jsx runtime. Successful exploitation allowed arbitrary JavaScript execution in the victim's browser under the application's origin.

Patches

This issue is patched in astro@7.3.2.

Workarounds

Do not interpolate untrusted dynamic values directly into <script> or <style> element children. Applications that cannot upgrade should validate and contextually encode these values before rendering them.

Credit

Reported by @RKasai127.

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
npm package astro < 7.3.2 7.3.2

References

CVSS score 6.5/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
Weakness (CWE)
CWE-79
Platform
npm
Package
astro
Disclosed
22.10.2026
Updated
22.10.2026 20:17

Sources and licenses

OSV / GitHub Advisory Database - GHSA-98hj-9722-w3j8 - CC BY 4.0

Vulnerability history: astro

All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (29) in the archive
Total entries
29
First → latest
10.2024 10.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 1
  • High 6
  • Medium 16
  • Low 6

Disclosures per year

  1. 2024: 3
  2. 2025: 11
  3. 2026: 15
Severity:
  1. Astro: Reflected/Stored XSS via unescaped <script>/<style> tag content in JSX/MDX rendering this entry
    Medium · 6.5 CVE-2026-114128 < 7.3.2 7.3.2
  2. Critical · 9.8 ghsa-26w7-cxv4-gfx2 < 7.2.8 7.2.8
  3. High · 7.5 CVE-2026-54299 < 6.4.6 6.4.6
  4. High · 7.1 CVE-2026-50146 < 6.3.3 6.3.3
  5. High · 7.1 CVE-2025-64764 < 5.15.8 5.15.8
  6. High · 7.2 CVE-2025-59837 >= 5.13.4, < 5.13.10 5.13.10
  7. High CVE-2024-56159 >= 5.0.0-alpha.0, < 5.0.8, < 4.16.18 5.0.8, 4.16.18

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.