Astro: Cross-site scripting via unescaped transition:* directive values on hydrated islands
Description
Astro is a web framework for content-driven websites. In versions 3.10.0 through 7.0.3, when a transition:persist, transition:scope, or transition:persist-props directive is applied to a client-hydrated (client:*) component, Astro copied the directive value onto the rendered element without HTML-escaping it. If a developer reflects attacker-controlled input into one of these directives, an attacker can break out of the attribute and inject arbitrary HTML/JavaScript into the server-rendered output, resulting in reflected cross-site scripting (XSS). Exploitation requires the application developer to have written a non-idiomatic pattern — passing untrusted, request-derived input directly into a transition directive. Astro applications that do not route untrusted input into these directives are unaffected. This issue has been fixed in version 7.0.4.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
astronpm | >= 3.10.0, < 7.0.4 | 7.0.4 |
Affected products
1Patches
Vulnerability mechanics
References
5- github.com/advisories/GHSA-7pw4-f3q4-r2p2ghsaADVISORY
- github.com/withastro/astro/commit/7ba0bb1dc7516e88caff9abd7767322af44b0294ghsax_refsource_MISCWEB
- github.com/withastro/astro/pull/17212ghsax_refsource_MISCWEB
- github.com/withastro/astro/releases/tag/[email protected]ghsax_refsource_MISCWEB
- github.com/withastro/astro/security/advisories/GHSA-7pw4-f3q4-r2p2ghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.