Skip to main content

Astro Framework CVE-2026-114128

| EUVDEUVD-2026-107411 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-21 GitHub_M GHSA-98hj-9722-w3j8
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Astro/MDX page interpolating untrusted data into script/style child
  2. Delivery
    Craft value with closing </script> or </style> tag plus injected script
  3. Exploit
    Deliver via request parameter or stored input
  4. Execution
    Victim loads page, element terminates early
  5. Persist
    Injected JavaScript executes under app origin
  6. Impact
    Session/cookie theft or action on behalf of user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the target application to pass attacker-controlled data as a DYNAMIC child of a <script> or <style> element rendered through the astro:jsx renderer (including MDX components) - e.g. <script>{value}</script> or <style>{value}</style> - where the attacker can influence that value via request input or stored data. The flaw does NOT affect compiler-generated literal script/style content or content injected by remark/rehype plugins, and does NOT affect other JSX expression contexts, which already escape dynamic strings. Limiting factors: the vulnerable coding pattern is developer-introduced (not a default configuration), the victim must load the affected page (UI:R), and only astro:jsx/MDX rendering paths prior to Astro 7.3.2 are affected; using set:html is the sanctioned opt-in for raw rendering.

Impact

This is a moderate, developer-dependent XSS (CWE-79) in the Astro framework's astro:jsx/MDX renderer, scored CVSS 6.5 (NVD vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N). The vector signals network reach, low complexity, no attacker privileges, but required user interaction (victim must load the page). No EPSS score, KEV entry, or SSVC decision data was supplied, so probabilistic and automatable signals cannot be evaluated - treat exploitation likelihood as unquantified. Critically, this is NOT a flaw exploitable against default/unmodified Astro installs: it only triggers when the application developer passes attacker-controlled data as a dynamic child of a <script> or <style> element (e.g. <script>{value}</script>) rendered through astro:jsx, including MDX components. All other JSX expression contexts already auto-escape, which sharply narrows the real-world attack surface. The public fix PR (#17896) ships a functional payload fixture ('</script><script id="script-owned">window.__pwned = true</script>'), so working exploit input is effectively public even though no CISA KEV or in-the-wild exploitation is indicated. Net: a genuine but conditional priority - high if your app renders untrusted data into script/style children, low otherwise. Note the PR:N in the vector reflects the victim/attacker-less web context, not that every Astro site is exploitable.

Exploit ScenarioDerived

A developer builds an Astro/MDX page that interpolates user- or request-derived data directly into a script or style child, e.g. <script>{userValue}</script>. An attacker submits a value containing '</script><script>...</script>' (or '</style>...'), which closes the element early and injects attacker JavaScript; when a victim loads the page, the script runs under the application's origin (reflected or stored XSS). A working payload demonstrating this is already published in the fix PR's test fixture.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

Reflected and stored cross-site scripting can occur in Astro Framework versions prior to 7.3.2 when an application passes attacker-controlled data as a dynamic child of a <script> or <style> element rendered through the astro:jsx renderer, including MDX components. Exploitation is conditional on that developer-introduced pattern-compiler-generated literal script/style content and other JSX expression contexts are not affected-and requires the victim to load the crafted page (UI:R). No public exploit code was identified at time of analysis; the NVD score is 6.5, while our independent assessment treats impact as limited (S:C/C:L/I:L/A:N) because the vulnerable pattern is not a default configuration.

RemediationAI

Upgrade to Astro 7.3.2 or later (vendor-released patch: Astro 7.3.2), and update the associated @astrojs/markdown-remark and @astrojs/markdown-satteri packages to the versions shipped with that release. If immediate upgrade is not possible, remove or rewrite application/MDX patterns that pass request-derived or stored user data as a dynamic child of <script> or <style>-for example, serialize untrusted values into a data attribute and parse them client-side, or JSON-encode and explicitly escape '<' before interpolation; do not rely on set:html with untrusted data, because set:html is the sanctioned opt-in for raw rendering and must only be used with trusted or sanitized content. A restrictive Content Security Policy can reduce impact but does not fix the injection and may require nonce/hash adjustments. The fix is tracked in PR https://github.com/withastro/astro/pull/17896, commit https://github.com/withastro/astro/commit/a548223607b9bb146d5d90ddda495343f9a2a739, and advisory https://github.com/withastro/astro/security/advisories/GHSA-98hj-9722-w3j8.

Affected VersionsENISA

astro < 7.3.2

Affected Packages

npm astro fix: 7.3.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Astro's astro:jsx renderer and MDX pipeline build HTML from JSX-like trees. In affected versions, when a <script> or <style> element had a plain-string child, the renderer marked it as an HTMLString and emitted it raw, on the assumption that such strings were compiler-generated literal content or plugin-injected markup. That assumption breaks when a dynamic expression such as <script>{value}</script> receives attacker-controlled data: a value containing </script> or </style> can close the element and inject HTML/JavaScript in the application origin. The root cause maps to CWE-79 (improper neutralization of input during web page generation). The 7.3.2 fix changes the compiler to collapse literal script/style content into set:html at compile time and escapes remaining dynamic string children-using escapeStyleText for style, which escapes only '<' to preserve CSS quotes. Other JSX contexts already escaped dynamic strings; the flaw is scoped to script/style children in astro:jsx/MDX rendering.

Know when Astro gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
vuln.today AI 6.1 MEDIUM

Reflected/stored XSS executing in the victim browser (a different security scope, S:C) with no attacker auth (PR:N) but required page load (UI:R); limited confidentiality/integrity impact typical of script injection.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Red Hat 6.1 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
Oct 21, 2026 - 19:18 EUVD

DescriptionCVE.org

Astro is a web framework for content-driven websites. Prior to 7.3.2, Astro's JSX and MDX rendering pipeline treats string children of script and style elements as trusted HTML without distinguishing compiler-generated literal content from dynamic expression values. An application that passes attacker-controlled data directly as a dynamic child can allow a value containing a closing script or style tag to terminate the element and inject arbitrary HTML and JavaScript. Other JSX expression contexts escape dynamic strings automatically; the issue is limited to script and style children rendered through the astro:jsx renderer, including MDX components. Successful exploitation can produce reflected or stored cross-site scripting under the application's origin. This issue is fixed in 7.3.2.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 4 npm packages depend on astro (4 direct, 0 indirect)

Ecosystem-wide dependent count for version 7.3.2.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Medium
popular JS web framework, significant but not universal adoption
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Astro

View all
CVE-2018-7180 CRITICAL POC
9.8 Feb 17

SQL Injection exists in the Saxum Astro 4.0.14 component for Joomla!. Rated critical severity (CVSS 9.8), this vulnerabi

CVE-2026-25545 HIGH POC
8.6 Feb 24

Astro web framework versions prior to 9.5.4 contain a server-side request forgery vulnerability in error page handling t

CVE-2026-59731 HIGH POC
8.2 Jul 08

Authorization bypass in the Astro web framework version 6.4.7 lets remote unauthenticated attackers reach protected rout

CVE-2024-56159 HIGH POC
7.8 Dec 19

Astro is a web framework for content-driven websites. Rated high severity (CVSS 7.8), this vulnerability is remotely exp

CVE-2025-59837 HIGH POC
7.2 Oct 28

Server-side request forgery in Astro's built-in image proxy lets unauthenticated remote attackers force the server to fe

CVE-2025-58179 HIGH POC
7.2 Sep 05

Astro is a web framework for content-driven websites. Rated high severity (CVSS 7.2), this vulnerability is remotely exp

CVE-2025-55303 MEDIUM POC
6.9 Aug 19

Astro is a web framework for content-driven websites. Rated medium severity (CVSS 6.9), this vulnerability is remotely e

CVE-2025-64765 MEDIUM POC
6.9 Nov 19

Astro is a web framework. Rated medium severity (CVSS 6.9), this vulnerability is remotely exploitable, no authenticatio

CVE-2025-64525 MEDIUM POC
6.5 Nov 13

Astro is a web framework. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitable, no authenticatio

CVE-2025-61925 MEDIUM POC
6.5 Oct 10

Unvalidated reflection of the X-Forwarded-Host header in Astro (versions before 5.14.3) lets remote, unauthenticated att

CVE-2026-27829 MEDIUM POC
6.5 Feb 26

Astro web framework versions 9.0.0 through 9.5.3 fail to validate remote image domains when the inferSize option is enab

CVE-2026-84376 MEDIUM POC
6.3 Sep 02

Base-path prefix bypass in Astro prior to 7.2.4 allows unauthenticated remote attackers to reach protected server-side r

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy