Every CVE Search/ Get API key

CVE-2025-55303

Unauthorized third-party images in Astro’s _image endpoint

6.9 MediumFix available

Astro is a web framework for content-driven websites. In versions of astro before 5.13.2 and 4.16.18, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served. On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images. A bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png. This vulnerability is fixed in 5.13.2 and 4.16.18.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
None

Exploit likelihood

0.64%Up 0.6 points since Aug 20, 2025
90%50%10%1%

What each source reports

CVE List Score used 6.9

Unauthorized third-party images in Astro’s _image endpoint

Astro is a web framework for content-driven websites. In versions of astro before 5.13.2 and 4.16.18, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served. On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images. A bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png. This vulnerability is fixed in 5.13.2 and 4.16.18.

Record
CVE-2025-55303
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-79, CWE-115
Updated
2026-11-02
EUVDEUVD-2025-25235 6.9

Astro is a web framework for content-driven websites. In versions of astro before 5.13.2 and 4.16.18, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served. On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images. A bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png. This vulnerability is fixed in 5.13.2 and 4.16.18.

Record
EUVD-2025-25235
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-xf8x-j4p2-f749 6.4

Astro allows unauthorized third-party images in _image endpoint

Summary

In affected versions of astro, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served.

Details

On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images.

The /_image endpoint is restricted to processing local images bundled with the site and also supports remote images from domains the site developer has manually authorized (using the image.domains or image.remotePatterns options).

However, a bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png.

Proof of Concept

  1. Create a new minimal Astro project ([email protected]).

  2. Configure it to use the Node adapter (@astrojs/[email protected] — newer versions are not impacted):

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    
    export default defineConfig({
    	adapter: node({ mode: 'standalone' }),
    });
    
  3. Build the site by running astro build.

  4. Run the server, e.g. with astro preview.

  5. Append /_image?href=//placehold.co/600x400 to the preview URL, e.g. http://localhost:4321/_image?href=//placehold.co/600x400

  6. The site will serve the image from the unauthorized placehold.co origin.

Impact

Allows a non-authorized third-party to create URLs on an impacted site’s origin that serve unauthorized image content. In the case of SVG images, this could include the risk of cross-site scripting (XSS) if a user followed a link to a maliciously crafted SVG.

Record
GHSA-xf8x-j4p2-f749
CVSS 4.0
6.4 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
Updated
2026-11-02
NVD 6.9

Astro is a web framework for content-driven websites. In versions of astro before 5.13.2 and 4.16.18, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served. On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images. A bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png. This vulnerability is fixed in 5.13.2 and 4.16.18.

Record
CVE-2025-55303
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/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
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79, CWE-115
Updated
2026-11-02
OSV 6.9

Unauthorized third-party images in Astro’s _image endpoint

Astro is a web framework for content-driven websites. In versions of astro before 5.13.2 and 4.16.18, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served. On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images. A bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png. This vulnerability is fixed in 5.13.2 and 4.16.18.

Record
CVE-2025-55303
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-115, CWE-79
Updated
2026-11-02
OSVGHSA-xf8x-j4p2-f749 6.4

Astro allows unauthorized third-party images in _image endpoint

Summary

In affected versions of astro, the image optimization endpoint in projects deployed with on-demand rendering allows images from unauthorized third-party domains to be served.

Details

On-demand rendered sites built with Astro include an /_image endpoint which returns optimized versions of images.

The /_image endpoint is restricted to processing local images bundled with the site and also supports remote images from domains the site developer has manually authorized (using the image.domains or image.remotePatterns options).

However, a bug in impacted versions of astro allows an attacker to bypass the third-party domain restrictions by using a protocol-relative URL as the image source, e.g. /_image?href=//example.com/image.png.

Proof of Concept

  1. Create a new minimal Astro project ([email protected]).

  2. Configure it to use the Node adapter (@astrojs/[email protected] — newer versions are not impacted):

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    
    export default defineConfig({
    	adapter: node({ mode: 'standalone' }),
    });
    
  3. Build the site by running astro build.

  4. Run the server, e.g. with astro preview.

  5. Append /_image?href=//placehold.co/600x400 to the preview URL, e.g. http://localhost:4321/_image?href=//placehold.co/600x400

  6. The site will serve the image from the unauthorized placehold.co origin.

Impact

Allows a non-authorized third-party to create URLs on an impacted site’s origin that serve unauthorized image content. In the case of SVG images, this could include the risk of cross-site scripting (XSS) if a user followed a link to a maliciously crafted SVG.

Record
GHSA-xf8x-j4p2-f749
CVSS 4.0
6.4 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
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-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-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-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-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-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-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-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-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-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-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-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
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

Affected products

Affected packages

Affected packages
PackageAffectedFixed
@astrojs/node
npm
through 9.1.0
9.1.1
astro
npm
through 4.16.18
4.16.19
astro
npm
5.0.0-alpha.0 up to 5.13.2
5.13.2
astro
TuxCare:npm
1.9.2-tuxcare.0 up to 1.9.2-tuxcare.1, plus listed versions
1.9.2
1.9.2-tuxcare.1
astro
TuxCare:npm
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.1, plus listed versions
0.26.1
0.26.1-tuxcare.1
@astrojs/db
TuxCare:npm
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
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
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
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
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 16 moreShow less
Affected packages
PackageAffectedFixed
@astrojs/internal-helpers
TuxCare:npm
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
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-helpers
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions
3.6.5
3.6.5-tuxcare.1
@astrojs/prism
TuxCare:npm
1.9.2-tuxcare.0 up to 1.9.2-tuxcare.1, plus listed versions
1.9.2
1.9.2-tuxcare.1
@astrojs/prism
TuxCare:npm
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.1, plus listed versions
0.26.1
0.26.1-tuxcare.1
@astrojs/prism
TuxCare:npm
2.10.15-tuxcare.0 up to 2.10.15-tuxcare.1, plus listed versions
2.10.15
2.10.15-tuxcare.1
@astrojs/prism
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions
3.6.5
3.6.5-tuxcare.1
@astrojs/prism
TuxCare:npm
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.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
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-redirects
TuxCare:npm
3.6.5-tuxcare.0 up to 3.6.5-tuxcare.1, plus listed versions
3.6.5
3.6.5-tuxcare.1
@astrojs/underscore-redirects
TuxCare:npm
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.1, plus listed versions
3.6.5
3.6.5-tuxcare.1
@astrojs/upgrade
TuxCare:npm
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/node
npm
before 9.1.1
9.1.1
astro
npm
before 4.16.19
4.16.19

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
NucleiAstro - Unauthorized Third-Party Image Access

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, Nuclei, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2025-55303 is a medium vulnerability (CVSS 6.9) in Astro, published August 19, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.64%, the 50th percentile. Fixed in @astrojs/node 9.1.1.

References

MoveEnter Open