Skip to main content

Astro CVE-2026-114127

| EUVDEUVD-2026-107409 LOW
Cross-site Scripting (XSS) (CWE-79)
2026-10-21 GitHub_M GHSA-mpr7-6m5w-76rw
2.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Inject CSS delimiters into transition animation value
  2. Exploit
    Server emits unescaped CSS declaration in stylesheet
  3. Execution
    Victim loads crafted server-rendered page
  4. Impact
    Attacker rules spoof UI or exfiltrate DOM attribute data

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 Astro application (versions 7.1.0 through 7.3.2) to pass attacker-controlled data into a server-side View Transition animation property - specifically duration, delay, easing, direction, fillMode, or the animation name - which the pre-patch CSS generator serializes without escaping the ';', '{', and '}' delimiters. This is a non-default, application-level condition: stock Astro with hardcoded transition values is not exploitable. Impact is further limited by the framework still escaping literal less-than characters (preventing style-element breakout, HTML, or JavaScript injection), by the need for a victim to load the crafted server-rendered page (passive user interaction), and by confining the outcome to CSS-level UI manipulation and at most exfiltration of data already present in selectable DOM attributes.

Impact

This is a genuinely low-priority issue, and the multiple signals agree rather than conflict. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N) scores 2.3 (Low), reflecting that while the attack is network-reachable and unauthenticated, it carries an attack requirement (AT:P) and passive user interaction (UI:P), with only Low confidentiality and integrity impact and no availability impact. There is no EPSS score, no CISA KEV listing, and no public exploit code in the provided data - only the upstream patch PR and its regression tests, which demonstrate the fix but are not a weaponized POC. Critically, the CWE-79 classification and the 'XSS' tag overstate the danger: the description explicitly notes that literal less-than characters remain escaped, so the flaw cannot terminate the style element or inject HTML/JavaScript. The real-world impact is confined to CSS injection (UI spoofing, content concealment/repositioning, and at most conditional exfiltration of data already in selectable DOM attributes). The most important limiting factor is not captured by CVSS: exploitation requires the hosting application to deliberately pass attacker-controlled data into View Transition animation properties - a non-default, application-specific coding pattern - so most Astro deployments are not exposed at all.

Exploit ScenarioDerived

An Astro application (7.1.0-7.3.2) server-renders a page that interpolates untrusted user input - for example a URL parameter or stored field - directly into a View Transition animation property such as duration, delay, easing, or the animation name. The attacker supplies a value containing CSS delimiters (';', '}', '{') to break out of the generated declaration and inject their own CSS rules, which a victim then loads as part of the server-rendered stylesheet. No public exploit code was identified at time of analysis; the attacker could overlay or hide interface elements to spoof the UI, and in some apps use conditional resource loads to leak attribute data already present in the DOM.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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

CSS injection in Astro's server-side View Transition generator (versions 7.1.0 through 7.3.2) lets attacker-controlled strings placed into animation properties - duration, delay, easing, direction, fillMode, or animation name - break out of their generated declaration because the ';', '{' and '}' delimiters are serialized unescaped. An application is only affected if it feeds untrusted input into those transition properties; stock Astro sites using hardcoded values are not exploitable. The framework still escapes literal less-than characters, so the injected content cannot close the style element, inject HTML, or execute JavaScript - impact is confined to CSS-level UI manipulation (hiding, repositioning or spoofing content, adding generated text, and conditional resource loads that may leak data already present in selectable DOM attributes). Severity is low (CVSS 4.0 base 2.3; independently assessed as CVSS 3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N), with no public exploit identified at time of analysis and a vendor fix released in Astro 7.3.3.

RemediationAI

Upgrade to Astro 7.3.3 or later (vendor-released patch; release notes at https://github.com/withastro/astro/releases/tag/astro@7.3.3, advisory at https://github.com/withastro/astro/security/advisories/GHSA-mpr7-6m5w-76rw). The fix escapes ';', '{' and '}' as CSS hex escapes inside stringifyAnimation while still permitting calc() and var() expressions, so no application changes are required after upgrading. If an immediate upgrade is not possible, the most effective compensating control is to stop untrusted data from reaching transition animation properties: map user input through a strict server-side allowlist (for example, accept only a fixed enum of named animations and only time/keyword tokens matching a pattern such as ^[0-9.]+m?s$ for duration and delay) or derive those values exclusively from a hardcoded table indexed by a validated key - the trade-off is reduced flexibility for applications that legitimately template transition timing per request. A Content-Security-Policy with a strict style-src (nonce- or hash-based rather than 'unsafe-inline') provides partial defense because injected rules land inside a style element, but style hashes must be recomputed whenever the generated CSS changes and nonce handling must be wired through Astro's SSR output, so this is a mitigation of impact rather than a fix. Because exploitation requires a victim to load the crafted server-rendered page, monitoring for unusual query- or API-driven transition parameter values in server logs can help identify attempted abuse, and any application that reflected such parameters should be reviewed for CSS-based UI redress or attribute-driven data exposure.

Affected VersionsENISA

astro 7.1.0, < 7.3.3

Affected Packages

npm astro fix: 7.3.3

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 is a content-driven web framework whose SSR runtime includes a View Transition CSS generator (packages/astro/src/runtime/server/transition.ts). Its stringifyAnimation builder assembles declarations such as animation-duration: <value>; by concatenating user-supplied strings directly into the emitted stylesheet that is injected into the page head. The patch at PR #17970 introduces escapeCSSValue(), a CSS_VALUE_DELIMITERS regex (/[;{}]/g) that replaces each delimiter with its escaped hex form (\3B , \7D , \7B ), while deliberately preserving valid CSS functions such as calc() and var() - the accompanying unit tests assert both the escaping behavior and that calc(1s + var(--transition-delay, 200ms)) still round-trips. The root cause is classified as CWE-79 (improper neutralization of input during web page generation), but in practice this is a style-context injection rather than script injection: because '<' remains escaped, an attacker cannot terminate the <style> element, so the achievable primitive is arbitrary CSS rules within the page's own stylesheet. That still permits UI redress - overlay or conceal elements, reposition controls, inject generated text via CSS content, and trigger conditional resource loads that can surface data already exposed in selectable DOM attributes. Affected package coordinates map to cpe:2.3:a:withastro:astro with the vulnerable range 7.1.0 through 7.3.2; the prerequisite of application-controlled (not framework-default) data flow is why the independent assessment scores AC:H and UI:R.

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 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.2 MEDIUM

AC:H because exploitation depends on the app passing untrusted data into animation properties (the 4.0 AT:P requirement); PR:N as no auth is needed, UI:R since a victim must load the page; C:L/I:L for limited CSS injection, A:N.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

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

DescriptionCVE.org

Astro is a web framework for content-driven websites. From 7.1.0 until 7.3.3, Astro's server-side View Transition CSS generator does not keep string animation properties within their generated declarations. An application that passes attacker-controlled data into properties such as duration, delay, easing, direction, fillMode, or animation names can allow CSS delimiters to terminate the declaration and add attacker-selected rules to the server-rendered page. The generated stylesheet still escapes literal less-than characters, so the injected content cannot terminate the style element or directly inject HTML or JavaScript. The injected CSS can conceal or reposition content, add generated text, and otherwise misrepresent the interface; some applications may also expose data already present in selectable DOM attributes through conditional resource loads. This issue is fixed in 7.3.3.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Medium
Astro is a popular modern web framework but far from universal deployment
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

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 LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
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

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