Every CVE Search/ Get API key

CVE-2026-73422

Astro: Reflected XSS via unescaped View Transition animation properties

5.3 MediumFix available

Astro is a web framework for content-driven websites. From 2.9.0 until 7.1.0, Astro's server-side View Transition CSS generator interpolates animation properties into an inline style element without escaping them for CSS and HTML contexts. An attacker-controlled View Transition animation value such as duration can terminate the generated style element and inject arbitrary HTML or JavaScript. The affected code is packages/astro/src/runtime/server/transition.ts; renderTransition passes sheet.toString() into markHTMLString(), while addAnimationProperty serializes duration through toTimeValue() and also handles easing, direction, delay, fillMode, and name. Exploitation requires an on-demand or server-rendered route to pass attacker-controlled data into a View Transition animation definition and can execute arbitrary JavaScript in the affected application's origin, allowing access to sensitive page data and authenticated actions available to the victim. This issue is fixed in version 7.1.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
Passive

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
None

Exploit likelihood

0.55%Up 0.2 points since Aug 13, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.3

Astro: Reflected XSS via unescaped View Transition animation properties

Astro is a web framework for content-driven websites. From 2.9.0 until 7.1.0, Astro's server-side View Transition CSS generator interpolates animation properties into an inline style element without escaping them for CSS and HTML contexts. An attacker-controlled View Transition animation value such as duration can terminate the generated style element and inject arbitrary HTML or JavaScript. The affected code is packages/astro/src/runtime/server/transition.ts; renderTransition passes sheet.toString() into markHTMLString(), while addAnimationProperty serializes duration through toTimeValue() and also handles easing, direction, delay, fillMode, and name. Exploitation requires an on-demand or server-rendered route to pass attacker-controlled data into a View Transition animation definition and can execute arbitrary JavaScript in the affected application's origin, allowing access to sensitive page data and authenticated actions available to the victim. This issue is fixed in version 7.1.0.

Record
CVE-2026-73422
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-79
Updated
2026-11-02
EUVDEUVD-2026-57606 5.3

Astro is a web framework for content-driven websites. From 2.9.0 until 7.1.0, Astro's server-side View Transition CSS generator interpolates animation properties into an inline style element without escaping them for CSS and HTML contexts. An attacker-controlled View Transition animation value such as duration can terminate the generated style element and inject arbitrary HTML or JavaScript. The affected code is packages/astro/src/runtime/server/transition.ts; renderTransition passes sheet.toString() into markHTMLString(), while addAnimationProperty serializes duration through toTimeValue() and also handles easing, direction, delay, fillMode, and name. Exploitation requires an on-demand or server-rendered route to pass attacker-controlled data into a View Transition animation definition and can execute arbitrary JavaScript in the affected application's origin, allowing access to sensitive page data and authenticated actions available to the victim. This issue is fixed in version 7.1.0.

Record
EUVD-2026-57606
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-4g3v-8h47-v7g6 5.3

Astro: Reflected XSS via unescaped View Transition animation properties

Summary

Astro's server-side View Transition CSS generator interpolates animation properties into an inline <style> element without escaping them for the CSS and HTML contexts.

An attacker-controlled value passed to an animation property such as duration can contain a </style> sequence, terminate the generated style element, and inject arbitrary HTML or JavaScript.

This is similar to GHSA-8hv8-536x-4wqp, but exploits a different injection point: unescaped View Transition animation values in a server-generated <style> element rather than an unescaped slot name in a hydration template.

Like GHSA-8hv8-536x-4wqp, exploitation requires an application to pass attacker-controlled data to an Astro API. However, the value is subsequently inserted into the HTML response without context-appropriate escaping by Astro.

Details

packages/astro/src/runtime/server/transition.ts

The generated stylesheet is wrapped in a <style> element and marked as HTML-safe:

const css = sheet.toString();
result._metadata.extraHead.push(markHTMLString(`<style>${css}</style>`));

Animation properties are added to the stylesheet without escaping:

if (anim.duration) {
  addAnimationProperty(builder, 'animation-duration', toTimeValue(anim.duration));
}

For string values, toTimeValue() returns the input unchanged:

export function toTimeValue(num: number | string) {
  return typeof num === 'number' ? num + 'ms' : num;
}

As a result, a duration value containing </style> can escape from the generated style element.

Other TransitionAnimation properties, including easing, direction, delay, fillMode, and name, are serialized by the same animation builder. The following PoC only relies on the official fade() helper and its duration option.

PoC

Using:

astro.config.mjs

import node from '@astrojs/node';
import { defineConfig } from 'astro/config';

export default defineConfig({
  output: 'server',
  adapter: node({ mode: 'standalone' }),
});

src/pages/index.astro

---
import { fade } from 'astro:transitions';

const duration = Astro.url.searchParams.get('duration') ?? '300ms';
---

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>PoC</title>
  </head>
  <body>
    <div transition:animate={fade({ duration })}>
      Animated content
    </div>
  </body>
</html>

Payload:

open:

http://localhost:4321/?duration=%3C%2Fstyle%3E%3Cscript%3Ealert(1)%3C%2Fscript%3E%3C!--

The browser interprets </style> as the end of the generated style element and executes the injected script. An alert dialog is displayed when the page is opened.

<img width="1307" height="681" alt="image" src="https://github.com/user-attachments/assets/0834236d-008f-415f-9f23-db509ab6f8f6" />

Impact

An attacker who can control a View Transition animation value can execute arbitrary JavaScript in the origin of the affected Astro application.

The query-based reflected XSS scenario affects on-demand/server-rendered routes, such as:

  • projects configured with output: "server";
  • pages using export const prerender = false;
  • other server-side data flows that pass attacker-controlled values into a View Transition animation definition.

Successful exploitation may allow access to sensitive page data and authenticated actions available to the victim.

Suggested Fix

Animation values should be serialized using context-appropriate CSS escaping or validation before being added to the generated stylesheet.

Additionally, content inserted into a raw <style> element must not be able to contain an HTML end-tag sequence such as </style>. The final generated CSS should be made safe for the HTML raw-text context before it is passed to markHTMLString().

Record
GHSA-4g3v-8h47-v7g6
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-79
Updated
2026-11-02
NVD 5.3

Astro is a web framework for content-driven websites. From 2.9.0 until 7.1.0, Astro's server-side View Transition CSS generator interpolates animation properties into an inline style element without escaping them for CSS and HTML contexts. An attacker-controlled View Transition animation value such as duration can terminate the generated style element and inject arbitrary HTML or JavaScript. The affected code is packages/astro/src/runtime/server/transition.ts; renderTransition passes sheet.toString() into markHTMLString(), while addAnimationProperty serializes duration through toTimeValue() and also handles easing, direction, delay, fillMode, and name. Exploitation requires an on-demand or server-rendered route to pass attacker-controlled data into a View Transition animation definition and can execute arbitrary JavaScript in the affected application's origin, allowing access to sensitive page data and authenticated actions available to the victim. This issue is fixed in version 7.1.0.

Record
CVE-2026-73422
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/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.3

Astro: Reflected XSS via unescaped View Transition animation properties

Astro is a web framework for content-driven websites. From 2.9.0 until 7.1.0, Astro's server-side View Transition CSS generator interpolates animation properties into an inline style element without escaping them for CSS and HTML contexts. An attacker-controlled View Transition animation value such as duration can terminate the generated style element and inject arbitrary HTML or JavaScript. The affected code is packages/astro/src/runtime/server/transition.ts; renderTransition passes sheet.toString() into markHTMLString(), while addAnimationProperty serializes duration through toTimeValue() and also handles easing, direction, delay, fillMode, and name. Exploitation requires an on-demand or server-rendered route to pass attacker-controlled data into a View Transition animation definition and can execute arbitrary JavaScript in the affected application's origin, allowing access to sensitive page data and authenticated actions available to the victim. This issue is fixed in version 7.1.0.

Record
CVE-2026-73422
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-79
Updated
2026-11-02
OSVGHSA-4g3v-8h47-v7g6 5.3

Astro: Reflected XSS via unescaped View Transition animation properties

Summary

Astro's server-side View Transition CSS generator interpolates animation properties into an inline <style> element without escaping them for the CSS and HTML contexts.

An attacker-controlled value passed to an animation property such as duration can contain a </style> sequence, terminate the generated style element, and inject arbitrary HTML or JavaScript.

This is similar to GHSA-8hv8-536x-4wqp, but exploits a different injection point: unescaped View Transition animation values in a server-generated <style> element rather than an unescaped slot name in a hydration template.

Like GHSA-8hv8-536x-4wqp, exploitation requires an application to pass attacker-controlled data to an Astro API. However, the value is subsequently inserted into the HTML response without context-appropriate escaping by Astro.

Details

packages/astro/src/runtime/server/transition.ts

The generated stylesheet is wrapped in a <style> element and marked as HTML-safe:

const css = sheet.toString();
result._metadata.extraHead.push(markHTMLString(`<style>${css}</style>`));

Animation properties are added to the stylesheet without escaping:

if (anim.duration) {
  addAnimationProperty(builder, 'animation-duration', toTimeValue(anim.duration));
}

For string values, toTimeValue() returns the input unchanged:

export function toTimeValue(num: number | string) {
  return typeof num === 'number' ? num + 'ms' : num;
}

As a result, a duration value containing </style> can escape from the generated style element.

Other TransitionAnimation properties, including easing, direction, delay, fillMode, and name, are serialized by the same animation builder. The following PoC only relies on the official fade() helper and its duration option.

PoC

Using:

astro.config.mjs

import node from '@astrojs/node';
import { defineConfig } from 'astro/config';

export default defineConfig({
  output: 'server',
  adapter: node({ mode: 'standalone' }),
});

src/pages/index.astro

---
import { fade } from 'astro:transitions';

const duration = Astro.url.searchParams.get('duration') ?? '300ms';
---

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>PoC</title>
  </head>
  <body>
    <div transition:animate={fade({ duration })}>
      Animated content
    </div>
  </body>
</html>

Payload:

open:

http://localhost:4321/?duration=%3C%2Fstyle%3E%3Cscript%3Ealert(1)%3C%2Fscript%3E%3C!--

The browser interprets </style> as the end of the generated style element and executes the injected script. An alert dialog is displayed when the page is opened.

<img width="1307" height="681" alt="image" src="https://github.com/user-attachments/assets/0834236d-008f-415f-9f23-db509ab6f8f6" />

Impact

An attacker who can control a View Transition animation value can execute arbitrary JavaScript in the origin of the affected Astro application.

The query-based reflected XSS scenario affects on-demand/server-rendered routes, such as:

  • projects configured with output: "server";
  • pages using export const prerender = false;
  • other server-side data flows that pass attacker-controlled values into a View Transition animation definition.

Successful exploitation may allow access to sensitive page data and authenticated actions available to the victim.

Suggested Fix

Animation values should be serialized using context-appropriate CSS escaping or validation before being added to the generated stylesheet.

Additionally, content inserted into a raw <style> element must not be able to contain an HTML end-tag sequence such as </style>. The final generated CSS should be made safe for the HTML raw-text context before it is passed to markHTMLString().

Record
GHSA-4g3v-8h47-v7g6
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-79
Updated
2026-11-02
Show 32 moreShow less
OSVCLSA-2026-1784596284 No score

TuxCare security update for 5 packages (3 CVEs)

TuxCare rebuilt 5 packages to address 3 CVEs. Fixed in 5.18.1-tuxcare.4.

Record
CLSA-2026-1784596284
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-1790089254 No score

TuxCare security update for astro (1 CVE)

TuxCare rebuilt astro to address 1 CVE. Fixed in 5.18.1-tuxcare.7.

Record
CLSA-2026-1790089254
Updated
2026-11-02
OSVCLSA-2026-1790089283 No score

TuxCare security update for 4 packages (2 CVEs)

TuxCare rebuilt 4 packages to address 2 CVEs. Fixed in 3.6.5-tuxcare.8.

Record
CLSA-2026-1790089283
Updated
2026-11-02
OSVCLSA-2026-1790105671 No score

TuxCare security update for astro (1 CVE)

TuxCare rebuilt astro to address 1 CVE. Fixed in 4.16.19-tuxcare.5.

Record
CLSA-2026-1790105671
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-1792161552 No score

TuxCare security update for @astrojs/internal-helpers (3 CVEs)

TuxCare rebuilt @astrojs/internal-helpers to address 3 CVEs. Fixed in 5.18.1-tuxcare.4.

Record
CLSA-2026-1792161552
Updated
2026-11-02
OSVCLSA-2026-1792161565 No score

TuxCare security update for @astrojs/internal-helpers (1 CVE)

TuxCare rebuilt @astrojs/internal-helpers to address 1 CVE. Fixed in 5.18.1-tuxcare.7.

Record
CLSA-2026-1792161565
Updated
2026-11-02
OSVCLSA-2026-1792161566 No score

TuxCare security update for @astrojs/internal-helpers (2 CVEs)

TuxCare rebuilt @astrojs/internal-helpers to address 2 CVEs. Fixed in 3.6.5-tuxcare.8.

Record
CLSA-2026-1792161566
Updated
2026-11-02
OSVCLSA-2026-1792161567 No score

TuxCare security update for @astrojs/internal-helpers (1 CVE)

TuxCare rebuilt @astrojs/internal-helpers to address 1 CVE. Fixed in 4.16.19-tuxcare.5.

Record
CLSA-2026-1792161567
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-1792161692 No score

TuxCare security update for @astrojs/prism (3 CVEs)

TuxCare rebuilt @astrojs/prism to address 3 CVEs. Fixed in 5.18.1-tuxcare.4.

Record
CLSA-2026-1792161692
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-1792161708 No score

TuxCare security update for @astrojs/prism (1 CVE)

TuxCare rebuilt @astrojs/prism to address 1 CVE. Fixed in 5.18.1-tuxcare.7.

Record
CLSA-2026-1792161708
Updated
2026-11-02
OSVCLSA-2026-1792161710 No score

TuxCare security update for @astrojs/prism (2 CVEs)

TuxCare rebuilt @astrojs/prism to address 2 CVEs. Fixed in 3.6.5-tuxcare.8.

Record
CLSA-2026-1792161710
Updated
2026-11-02
OSVCLSA-2026-1792161711 No score

TuxCare security update for @astrojs/prism (1 CVE)

TuxCare rebuilt @astrojs/prism to address 1 CVE. Fixed in 4.16.19-tuxcare.5.

Record
CLSA-2026-1792161711
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-1792161762 No score

TuxCare security update for @astrojs/studio (1 CVE)

TuxCare rebuilt @astrojs/studio to address 1 CVE. Fixed in 4.16.19-tuxcare.5.

Record
CLSA-2026-1792161762
Updated
2026-11-02
OSVCLSA-2026-1792161784 No score

TuxCare security update for @astrojs/underscore-redirects (3 CVEs)

TuxCare rebuilt @astrojs/underscore-redirects to address 3 CVEs. Fixed in 5.18.1-tuxcare.4.

Record
CLSA-2026-1792161784
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-1792161796 No score

TuxCare security update for @astrojs/underscore-redirects (1 CVE)

TuxCare rebuilt @astrojs/underscore-redirects to address 1 CVE. Fixed in 5.18.1-tuxcare.7.

Record
CLSA-2026-1792161796
Updated
2026-11-02
OSVCLSA-2026-1792161797 No score

TuxCare security update for @astrojs/underscore-redirects (2 CVEs)

TuxCare rebuilt @astrojs/underscore-redirects to address 2 CVEs. Fixed in 3.6.5-tuxcare.8.

Record
CLSA-2026-1792161797
Updated
2026-11-02
OSVCLSA-2026-1792161798 No score

TuxCare security update for @astrojs/underscore-redirects (1 CVE)

TuxCare rebuilt @astrojs/underscore-redirects to address 1 CVE. Fixed in 4.16.19-tuxcare.5.

Record
CLSA-2026-1792161798
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-1792161852 No score

TuxCare security update for @astrojs/upgrade (3 CVEs)

TuxCare rebuilt @astrojs/upgrade to address 3 CVEs. Fixed in 5.18.1-tuxcare.4.

Record
CLSA-2026-1792161852
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-1792161861 No score

TuxCare security update for @astrojs/upgrade (1 CVE)

TuxCare rebuilt @astrojs/upgrade to address 1 CVE. Fixed in 5.18.1-tuxcare.7.

Record
CLSA-2026-1792161861
Updated
2026-11-02
OSVCLSA-2026-1792161862 No score

TuxCare security update for @astrojs/upgrade (2 CVEs)

TuxCare rebuilt @astrojs/upgrade to address 2 CVEs. Fixed in 3.6.5-tuxcare.8.

Record
CLSA-2026-1792161862
Updated
2026-11-02
OSVCLSA-2026-1792161864 No score

TuxCare security update for @astrojs/upgrade (1 CVE)

TuxCare rebuilt @astrojs/upgrade to address 1 CVE. Fixed in 4.16.19-tuxcare.5.

Record
CLSA-2026-1792161864
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
2.9.0 to 7.0.9
7.1.0
@astrojs/db
TuxCare:npm
From an advisory covering 2 CVEs
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.4, plus listed versions
5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@astrojs/rss
TuxCare:npm
From an advisory covering 2 CVEs
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.4, plus listed versions
5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@astrojs/telemetry
TuxCare:npm
From an advisory covering 2 CVEs
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.4, plus listed versions
5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
astro
TuxCare:npm
From an advisory covering 2 CVEs
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.4, plus listed versions
5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
create-astro
TuxCare:npm
From an advisory covering 2 CVEs
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.4, plus listed versions
5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@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
Show 39 moreShow less
Affected packages
PackageAffectedFixed
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
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.7, plus listed versions
5.18.15.18.1-tuxcare.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.45.18.1-tuxcare.55.18.1-tuxcare.6
5.18.1-tuxcare.7
@astrojs/rss
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, 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.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
@astrojs/telemetry
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, 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.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
astro
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, 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.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
create-astro
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, 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.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
astro
TuxCare:npm
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.5, plus listed versions
4.16.194.16.19-tuxcare.14.16.19-tuxcare.24.16.19-tuxcare.34.16.19-tuxcare.4
4.16.19-tuxcare.5
@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
@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.4, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@astrojs/internal-helpers
TuxCare:npm
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.7, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.45.18.1-tuxcare.55.18.1-tuxcare.6
5.18.1-tuxcare.7
@astrojs/internal-helpers
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, plus listed versions
3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
@astrojs/internal-helpers
TuxCare:npm
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.5, plus listed versions
4.16.194.16.19-tuxcare.14.16.19-tuxcare.24.16.19-tuxcare.3
4.16.19-tuxcare.5
@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.4, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@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
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.7, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.45.18.1-tuxcare.55.18.1-tuxcare.6
5.18.1-tuxcare.7
@astrojs/prism
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, plus listed versions
3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
@astrojs/prism
TuxCare:npm
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.5, plus listed versions
4.16.194.16.19-tuxcare.14.16.19-tuxcare.24.16.19-tuxcare.3
4.16.19-tuxcare.5
@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/studio
TuxCare:npm
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.5, plus listed versions
4.16.194.16.19-tuxcare.14.16.19-tuxcare.24.16.19-tuxcare.3
4.16.19-tuxcare.5
@astrojs/underscore-redirects
TuxCare:npm
From an advisory covering 2 CVEs
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.4, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@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
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.7, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.45.18.1-tuxcare.55.18.1-tuxcare.6
5.18.1-tuxcare.7
@astrojs/underscore-redirects
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, plus listed versions
3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
@astrojs/underscore-redirects
TuxCare:npm
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.5, plus listed versions
4.16.194.16.19-tuxcare.14.16.19-tuxcare.24.16.19-tuxcare.3
4.16.19-tuxcare.5
@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.4, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.3
5.18.1-tuxcare.4
@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
5.18.1-tuxcare.0 up to 5.18.1-tuxcare.7, plus listed versions
5.18.15.18.1-tuxcare.25.18.1-tuxcare.35.18.1-tuxcare.45.18.1-tuxcare.55.18.1-tuxcare.6
5.18.1-tuxcare.7
@astrojs/upgrade
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.8, plus listed versions
3.6.53.6.5-tuxcare.13.6.5-tuxcare.23.6.5-tuxcare.33.6.5-tuxcare.53.6.5-tuxcare.63.6.5-tuxcare.7
3.6.5-tuxcare.8
@astrojs/upgrade
TuxCare:npm
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.5, plus listed versions
4.16.194.16.19-tuxcare.14.16.19-tuxcare.24.16.19-tuxcare.3
4.16.19-tuxcare.5
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
astro
npm
2.9.0 up to 7.1.0
7.1.0

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-73422 is a medium vulnerability (CVSS 5.3) 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.55%, the 46th percentile. Fixed in astro 7.1.0.

References

MoveEnter Open