Every CVE Search/ Get API key

CVE-2026-59729

Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)

5.1 MediumFix available

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

0.47%Up 0.1 points since Jul 28, 2026
90%50%10%1%

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 MediumCVSS: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 MediumCVSS: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 MediumCVSS: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 MediumCVSS: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 MediumCVSS: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 MediumCVSS: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

Affected packages
PackageAffectedFixed
astro
npm
before 7.0.6
7.0.6
astro
TuxCare: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/db
TuxCare: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/rss
TuxCare: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/telemetry
TuxCare: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
astro
TuxCare: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-astro
TuxCare: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
astro
TuxCare: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
astro
TuxCare: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/rss
TuxCare: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
Affected packages
PackageAffectedFixed
@astrojs/telemetry
TuxCare: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/webapi
TuxCare: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
astro
TuxCare: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-astro
TuxCare: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-helpers
TuxCare: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-helpers
TuxCare: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-helpers
TuxCare: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-helpers
TuxCare: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/prism
TuxCare: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/prism
TuxCare: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/prism
TuxCare: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/prism
TuxCare: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/prism
TuxCare: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/studio
TuxCare: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-redirects
TuxCare: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-redirects
TuxCare: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-redirects
TuxCare: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-redirects
TuxCare: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/upgrade
TuxCare: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/upgrade
TuxCare: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/upgrade
TuxCare: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
astro
TuxCare: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

History
RecordedChangedSources
affected, facts
first indexedCVE 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

MoveEnter Open