CVE-2026-59729
Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)
Astro is a web framework for content-driven websites. Versions prior to 7.0.6 are vulnerable to XSS through unescaped spread attribute names in renderHTMLElement. The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context. This issue has been fixed in version 7.0.6.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.1
Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)
Astro is a web framework for content-driven websites. Versions prior to 7.0.6 are vulnerable to XSS through unescaped spread attribute names in renderHTMLElement. The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context. This issue has been fixed in version 7.0.6.
- Record
CVE-2026-59729- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-49580
5.1
Astro is a web framework for content-driven websites. Versions prior to 7.0.6 are vulnerable to XSS through unescaped spread attribute names in renderHTMLElement. The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context. This issue has been fixed in version 7.0.6.
- Record
EUVD-2026-49580- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-f48w-9m4c-m7f5
5.1
Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)
Summary
The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context, resulting in XSS.
Details
renderHTMLElement builds attributes directly:
for (const attr in props) {
attrHTML += ` ${attr}="${toAttributeString(await props[attr])}"`;
}
The attribute name (attr) is interpolated raw; only the value is escaped via toAttributeString. By contrast, the hardened addAttribute in util.ts rejects invalid names:
if (INVALID_ATTR_NAME_CHAR.test(key)) { return ''; } // /[\s"'>/=]/
renderHTMLElement is reached from component.ts when the component is a native HTMLElement subclass:
if (!renderer && typeof HTMLElement === 'function' && componentIsHTMLElement(Component)) {
const output = await renderHTMLElement(result, Component, _props, slots);
}
where _props carries spread props verbatim.
Reachability
The branch only runs when typeof HTMLElement === 'function' at SSR time. In default Node SSR HTMLElement is undefined, so the branch is dead. It becomes reachable when the SSR runtime exposes a global HTMLElement (Deno, Bun with a DOM shim, or jsdom/happy-dom in Node) and a class extending HTMLElement is used directly as an Astro component that receives untrusted-keyed spread props.
Proof of Concept
Given malicious spread props:
const maliciousProps = {
'onmouseover=alert(document.domain) x': 'y',
'x><script>alert(1)</script>': 'z',
};
addAttribute(post-fix) →<my-el></my-el>(key stripped — safe)renderHTMLElement→<my-el onmouseover=alert(document.domain) x="y" x><script>alert(1)</script>="z"></my-el>(handler +<script>injected — XSS)
Equivalent Astro template, served by an SSR runtime that defines a global HTMLElement:
---
import MyElement from '../MyElement.js'; // class MyElement extends HTMLElement {}
const userInput = Astro.url.searchParams; // untrusted keys
---
<MyElement {...Object.fromEntries(userInput)} />
Impact
Cross-site scripting (CWE-79) via attribute-name breakout — the same vulnerability class as CVE-2026-54298, in a code path its fix did not cover. An attacker who controls the keys of an object spread onto a native-HTMLElement-subclass component can inject arbitrary event-handler attributes or sibling elements (including <script>) into the SSR output. Reachability is constrained by the runtime and component preconditions described above.
- Record
GHSA-f48w-9m4c-m7f5- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
5.1
Astro is a web framework for content-driven websites. Versions prior to 7.0.6 are vulnerable to XSS through unescaped spread attribute names in renderHTMLElement. The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context. This issue has been fixed in version 7.0.6.
- Record
CVE-2026-59729- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/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 - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
5.1
Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)
Astro is a web framework for content-driven websites. Versions prior to 7.0.6 are vulnerable to XSS through unescaped spread attribute names in renderHTMLElement. The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context. This issue has been fixed in version 7.0.6.
- Record
CVE-2026-59729- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVGHSA-f48w-9m4c-m7f5
5.1
Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)
Summary
The fix for CVE-2026-54298 (GHSA-jrpj-wcv7-9fh9) added an INVALID_ATTR_NAME_CHAR guard to addAttribute() so that spread-prop attribute names containing "' >/= or whitespace are dropped. A second attribute-rendering path, renderHTMLElement() in packages/astro/src/runtime/server/render/dom.ts, has its own inline attribute loop that does not go through addAttribute() and was not updated. It interpolates the attribute name unescaped and only escapes the value, so untrusted prop keys spread onto a native-HTMLElement-subclass component can still break out of the attribute context, resulting in XSS.
Details
renderHTMLElement builds attributes directly:
for (const attr in props) {
attrHTML += ` ${attr}="${toAttributeString(await props[attr])}"`;
}
The attribute name (attr) is interpolated raw; only the value is escaped via toAttributeString. By contrast, the hardened addAttribute in util.ts rejects invalid names:
if (INVALID_ATTR_NAME_CHAR.test(key)) { return ''; } // /[\s"'>/=]/
renderHTMLElement is reached from component.ts when the component is a native HTMLElement subclass:
if (!renderer && typeof HTMLElement === 'function' && componentIsHTMLElement(Component)) {
const output = await renderHTMLElement(result, Component, _props, slots);
}
where _props carries spread props verbatim.
Reachability
The branch only runs when typeof HTMLElement === 'function' at SSR time. In default Node SSR HTMLElement is undefined, so the branch is dead. It becomes reachable when the SSR runtime exposes a global HTMLElement (Deno, Bun with a DOM shim, or jsdom/happy-dom in Node) and a class extending HTMLElement is used directly as an Astro component that receives untrusted-keyed spread props.
Proof of Concept
Given malicious spread props:
const maliciousProps = {
'onmouseover=alert(document.domain) x': 'y',
'x><script>alert(1)</script>': 'z',
};
addAttribute(post-fix) →<my-el></my-el>(key stripped — safe)renderHTMLElement→<my-el onmouseover=alert(document.domain) x="y" x><script>alert(1)</script>="z"></my-el>(handler +<script>injected — XSS)
Equivalent Astro template, served by an SSR runtime that defines a global HTMLElement:
---
import MyElement from '../MyElement.js'; // class MyElement extends HTMLElement {}
const userInput = Astro.url.searchParams; // untrusted keys
---
<MyElement {...Object.fromEntries(userInput)} />
Impact
Cross-site scripting (CWE-79) via attribute-name breakout — the same vulnerability class as CVE-2026-54298, in a code path its fix did not cover. An attacker who controls the keys of an object spread onto a native-HTMLElement-subclass component can inject arbitrary event-handler attributes or sibling elements (including <script>) into the SSR output. Reachability is constrained by the runtime and component preconditions described above.
- Record
GHSA-f48w-9m4c-m7f5- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-79
- Updated
- 2026-11-02
Show 23 moreShow less
OSVCLSA-2026-1784596296 No score
TuxCare security update for astro (2 CVEs)
TuxCare rebuilt astro to address 2 CVEs. Fixed in 5.18.1-tuxcare.5.
- Record
CLSA-2026-1784596296- Updated
- 2026-11-02
OSVCLSA-2026-1786365605 No score
TuxCare security update for 5 packages (4 CVEs)
TuxCare rebuilt 5 packages to address 4 CVEs. Fixed in 4.16.19-tuxcare.3.
- Record
CLSA-2026-1786365605- Updated
- 2026-11-02
OSVCLSA-2026-1788892753 No score
TuxCare security update for astro (1 CVE)
TuxCare rebuilt astro to address 1 CVE. Fixed in 0.26.1-tuxcare.3.
- Record
CLSA-2026-1788892753- Updated
- 2026-11-02
OSVCLSA-2026-1788970606 No score
TuxCare security update for astro (1 CVE)
TuxCare rebuilt astro to address 1 CVE. Fixed in 3.6.5-tuxcare.6.
- Record
CLSA-2026-1788970606- Updated
- 2026-11-02
OSVCLSA-2026-1790106019 No score
TuxCare security update for 5 packages (3 CVEs)
TuxCare rebuilt 5 packages to address 3 CVEs. Fixed in 2.10.15-tuxcare.8.
- Record
CLSA-2026-1790106019- Updated
- 2026-11-02
OSVCLSA-2026-1792160941 No score
TuxCare security update for @astrojs/internal-helpers (4 CVEs)
TuxCare rebuilt @astrojs/internal-helpers to address 4 CVEs. Fixed in 4.16.19-tuxcare.3.
- Record
CLSA-2026-1792160941- Updated
- 2026-11-02
OSVCLSA-2026-1792161554 No score
TuxCare security update for @astrojs/internal-helpers (2 CVEs)
TuxCare rebuilt @astrojs/internal-helpers to address 2 CVEs. Fixed in 5.18.1-tuxcare.5.
- Record
CLSA-2026-1792161554- Updated
- 2026-11-02
OSVCLSA-2026-1792161561 No score
TuxCare security update for @astrojs/internal-helpers (1 CVE)
TuxCare rebuilt @astrojs/internal-helpers to address 1 CVE. Fixed in 3.6.5-tuxcare.6.
- Record
CLSA-2026-1792161561- Updated
- 2026-11-02
OSVCLSA-2026-1792161568 No score
TuxCare security update for @astrojs/internal-helpers (3 CVEs)
TuxCare rebuilt @astrojs/internal-helpers to address 3 CVEs. Fixed in 2.10.15-tuxcare.8.
- Record
CLSA-2026-1792161568- Updated
- 2026-11-02
OSVCLSA-2026-1792161693 No score
TuxCare security update for @astrojs/prism (2 CVEs)
TuxCare rebuilt @astrojs/prism to address 2 CVEs. Fixed in 5.18.1-tuxcare.5.
- Record
CLSA-2026-1792161693- Updated
- 2026-11-02
OSVCLSA-2026-1792161702 No score
TuxCare security update for @astrojs/prism (4 CVEs)
TuxCare rebuilt @astrojs/prism to address 4 CVEs. Fixed in 4.16.19-tuxcare.3.
- Record
CLSA-2026-1792161702- Updated
- 2026-11-02
OSVCLSA-2026-1792161703 No score
TuxCare security update for @astrojs/prism (1 CVE)
TuxCare rebuilt @astrojs/prism to address 1 CVE. Fixed in 0.26.1-tuxcare.3.
- Record
CLSA-2026-1792161703- Updated
- 2026-11-02
OSVCLSA-2026-1792161706 No score
TuxCare security update for @astrojs/prism (1 CVE)
TuxCare rebuilt @astrojs/prism to address 1 CVE. Fixed in 3.6.5-tuxcare.6.
- Record
CLSA-2026-1792161706- Updated
- 2026-11-02
OSVCLSA-2026-1792161712 No score
TuxCare security update for @astrojs/prism (3 CVEs)
TuxCare rebuilt @astrojs/prism to address 3 CVEs. Fixed in 2.10.15-tuxcare.8.
- Record
CLSA-2026-1792161712- Updated
- 2026-11-02
OSVCLSA-2026-1792161761 No score
TuxCare security update for @astrojs/studio (4 CVEs)
TuxCare rebuilt @astrojs/studio to address 4 CVEs. Fixed in 4.16.19-tuxcare.3.
- Record
CLSA-2026-1792161761- Updated
- 2026-11-02
OSVCLSA-2026-1792161785 No score
TuxCare security update for @astrojs/underscore-redirects (2 CVEs)
TuxCare rebuilt @astrojs/underscore-redirects to address 2 CVEs. Fixed in 5.18.1-tuxcare.5.
- Record
CLSA-2026-1792161785- Updated
- 2026-11-02
OSVCLSA-2026-1792161790 No score
TuxCare security update for @astrojs/underscore-redirects (4 CVEs)
TuxCare rebuilt @astrojs/underscore-redirects to address 4 CVEs. Fixed in 4.16.19-tuxcare.3.
- Record
CLSA-2026-1792161790- Updated
- 2026-11-02
OSVCLSA-2026-1792161792 No score
TuxCare security update for @astrojs/underscore-redirects (1 CVE)
TuxCare rebuilt @astrojs/underscore-redirects to address 1 CVE. Fixed in 3.6.5-tuxcare.6.
- Record
CLSA-2026-1792161792- Updated
- 2026-11-02
OSVCLSA-2026-1792161799 No score
TuxCare security update for @astrojs/underscore-redirects (3 CVEs)
TuxCare rebuilt @astrojs/underscore-redirects to address 3 CVEs. Fixed in 2.10.15-tuxcare.8.
- Record
CLSA-2026-1792161799- Updated
- 2026-11-02
OSVCLSA-2026-1792161854 No score
TuxCare security update for @astrojs/upgrade (2 CVEs)
TuxCare rebuilt @astrojs/upgrade to address 2 CVEs. Fixed in 5.18.1-tuxcare.5.
- Record
CLSA-2026-1792161854- Updated
- 2026-11-02
OSVCLSA-2026-1792161857 No score
TuxCare security update for @astrojs/upgrade (4 CVEs)
TuxCare rebuilt @astrojs/upgrade to address 4 CVEs. Fixed in 4.16.19-tuxcare.3.
- Record
CLSA-2026-1792161857- Updated
- 2026-11-02
OSVCLSA-2026-1792161858 No score
TuxCare security update for @astrojs/upgrade (1 CVE)
TuxCare rebuilt @astrojs/upgrade to address 1 CVE. Fixed in 3.6.5-tuxcare.6.
- Record
CLSA-2026-1792161858- Updated
- 2026-11-02
OSVCLSA-2026-1792454046 No score
TuxCare security update for astro (9 CVEs)
TuxCare rebuilt astro to address 9 CVEs. Fixed in 5.18.2-tuxcare.1.
- Record
CLSA-2026-1792454046- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
astronpm |
before 7.0.6 | 7.0.6 |
astroTuxCare:npm From an advisory covering 2 CVEs |
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.5, plus listed versions 5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.4 |
5.18.1-tuxcare.5 |
@astrojs/dbTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/rssTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/telemetryTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
astroTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
create-astroTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
astroTuxCare:npm |
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.3, plus listed versions 0.26.10.26.1-tuxcare.10.26.1-tuxcare.2 |
0.26.1-tuxcare.3 |
astroTuxCare:npm |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.6, plus listed versions 3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.43.6.5-tuxcare.5 |
3.6.5-tuxcare.6 |
@astrojs/rssTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.62.10.15-tuxcare.7 |
2.10.15-tuxcare.8 |
Show 22 moreShow less
| Package | Affected | Fixed |
|---|---|---|
@astrojs/telemetryTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.62.10.15-tuxcare.7 |
2.10.15-tuxcare.8 |
@astrojs/webapiTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.62.10.15-tuxcare.7 |
2.10.15-tuxcare.8 |
astroTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.62.10.15-tuxcare.7 |
2.10.15-tuxcare.8 |
create-astroTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.62.10.15-tuxcare.7 |
2.10.15-tuxcare.8 |
@astrojs/internal-helpersTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/internal-helpersTuxCare:npm From an advisory covering 2 CVEs |
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.5, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.4 |
5.18.1-tuxcare.5 |
@astrojs/internal-helpersTuxCare:npm |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.6, plus listed versions 3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.5 |
3.6.5-tuxcare.6 |
@astrojs/internal-helpersTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.6 |
2.10.15-tuxcare.8 |
@astrojs/prismTuxCare:npm From an advisory covering 2 CVEs |
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.5, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.4 |
5.18.1-tuxcare.5 |
@astrojs/prismTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/prismTuxCare:npm |
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.3, plus listed versions 0.26.10.26.1-tuxcare.10.26.1-tuxcare.2 |
0.26.1-tuxcare.3 |
@astrojs/prismTuxCare:npm |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.6, plus listed versions 3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.5 |
3.6.5-tuxcare.6 |
@astrojs/prismTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.6 |
2.10.15-tuxcare.8 |
@astrojs/studioTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/underscore-redirectsTuxCare:npm From an advisory covering 2 CVEs |
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.5, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.4 |
5.18.1-tuxcare.5 |
@astrojs/underscore-redirectsTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/underscore-redirectsTuxCare:npm |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.6, plus listed versions 3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.5 |
3.6.5-tuxcare.6 |
@astrojs/underscore-redirectsTuxCare:npm From an advisory covering 2 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.8, plus listed versions 2.10.152.10.15-tuxcare.12.10.15-tuxcare.22.10.15-tuxcare.32.10.15-tuxcare.42.10.15-tuxcare.52.10.15-tuxcare.6 |
2.10.15-tuxcare.8 |
@astrojs/upgradeTuxCare:npm From an advisory covering 2 CVEs |
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.5, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.4 |
5.18.1-tuxcare.5 |
@astrojs/upgradeTuxCare:npm From an advisory covering 3 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.3, plus listed versions 4.16.194.16.19-tuxcare.14.16.19-tuxcare.2 |
4.16.19-tuxcare.3 |
@astrojs/upgradeTuxCare:npm |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.6, plus listed versions 3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.5 |
3.6.5-tuxcare.6 |
astroTuxCare:npm From an advisory covering 9 CVEs |
5.18.2-tuxcare.0 up to 5.18.2-tuxcare.1, plus listed versions 5.18.2 |
5.18.2-tuxcare.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-59729 is a medium vulnerability (CVSS 5.1) in Withastro Astro, published July 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.47%, the 41st percentile. Fixed in astro 7.0.6.
References
github.com/withastro/astro/security/advisories/GHSA-f48w-9m4c-m7f5
github.com/withastro/astro/pull/17251
github.com/withastro/astro/commit/5240e26c9dd91f9bc7140dcfacdb48d5a132830d
github.com/withastro/astro/releases/tag/[email protected]
nvd.nist.gov/vuln/detail/CVE-2026-59729
github.com/advisories/GHSA-f48w-9m4c-m7f5
github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59729.json
github.com/withastro/astro