CVE-2026-73422
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.
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
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 Medium
CVSS: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 Medium
CVSS: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:
[email protected]@astrojs/[email protected]
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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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:
[email protected]@astrojs/[email protected]
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 Medium
CVSS: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
| Package | Affected | Fixed |
|---|---|---|
astronpm |
2.9.0 to 7.0.9 | 7.1.0 |
@astrojs/dbTuxCare: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/rssTuxCare: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/telemetryTuxCare: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 |
astroTuxCare: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-astroTuxCare: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/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 |
Show 39 moreShow less
| Package | Affected | Fixed |
|---|---|---|
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 |
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/rssTuxCare: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/telemetryTuxCare: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 |
astroTuxCare: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-astroTuxCare: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 |
astroTuxCare: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/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 |
@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.4, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.3 |
5.18.1-tuxcare.4 |
@astrojs/internal-helpersTuxCare: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-helpersTuxCare: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-helpersTuxCare: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-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.4, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.3 |
5.18.1-tuxcare.4 |
@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 |
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/prismTuxCare: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/prismTuxCare: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/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/studioTuxCare: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-redirectsTuxCare: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-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 |
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-redirectsTuxCare: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-redirectsTuxCare: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-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.4, plus listed versions 5.18.15.18.1-tuxcare.25.18.1-tuxcare.3 |
5.18.1-tuxcare.4 |
@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 |
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/upgradeTuxCare: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/upgradeTuxCare: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 |
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 |
astronpm |
2.9.0 up to 7.1.0 | 7.1.0 |
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-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
github.com/withastro/astro/security/advisories/GHSA-4g3v-8h47-v7g6
github.com/withastro/astro/pull/17393
github.com/withastro/astro/commit/092da560eea77ee63a3e2c583c80d8238544e42b
github.com/withastro/astro/releases/tag/[email protected]
github.com/advisories/GHSA-4g3v-8h47-v7g6
github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73422.json
nvd.nist.gov/vuln/detail/CVE-2026-73422
github.com/withastro/astro