CVE-2025-58179

7.2 HIGH

📋 TL;DR

This CVE describes a Server-Side Request Forgery (SSRF) vulnerability in Astro's Cloudflare adapter. When configured with output: 'server' and using the default imageService: 'compile', the image optimization endpoint fails to validate URLs, allowing attackers to serve content from unauthorized third-party domains through the vulnerable origin. This affects Astro deployments using the @astrojs/cloudflare adapter with specific configurations.

💻 Affected Systems

Products:
  • Astro
  • @astrojs/cloudflare
Versions: 11.0.3 through 12.6.5
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only vulnerable when configured with output: 'server' and using the default imageService: 'compile' setting.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could serve malicious content from the vulnerable origin, potentially enabling phishing attacks, data exfiltration, or using the server as a proxy for attacks against internal systems.

🟠

Likely Case

Attackers could bypass domain restrictions to serve unauthorized content through the vulnerable server, potentially enabling content injection or using the server as an unwitting proxy.

🟢

If Mitigated

With proper input validation and domain restrictions, the impact would be limited to failed exploitation attempts.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability appears to be exploitable without authentication by sending crafted requests to the image optimization endpoint.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 12.6.6

Vendor Advisory: https://github.com/withastro/astro/security/advisories/GHSA-qpr4-c339-7vq8

Restart Required: Yes

Instructions:

1. Update Astro to version 12.6.6 or later. 2. Update @astrojs/cloudflare adapter to the latest version. 3. Restart the application server. 4. Verify the fix by testing the image optimization endpoint.

🔧 Temporary Workarounds

Disable vulnerable configuration

all

Change the output configuration from 'server' to 'static' or modify the imageService setting to avoid the vulnerable combination.

Modify astro.config.mjs to set output: 'static' or configure a different imageService

Implement input validation middleware

all

Add custom middleware to validate and sanitize URLs before they reach the image optimization endpoint.

Implement custom middleware in your Astro project to validate image URLs against allowed domains

🧯 If You Can't Patch

  • Implement strict input validation for all URL parameters in the image optimization endpoint
  • Deploy a WAF (Web Application Firewall) with SSRF protection rules to block malicious requests

🔍 How to Verify

Check if Vulnerable:

Check if your Astro version is between 11.0.3 and 12.6.5 and if you're using output: 'server' with default imageService: 'compile' configuration.

Check Version:

npm list astro @astrojs/cloudflare

Verify Fix Applied:

After updating to version 12.6.6 or later, test the image optimization endpoint with unauthorized domain URLs to ensure they are rejected.

📡 Detection & Monitoring

Log Indicators:

  • Unusual requests to image optimization endpoints with external domain URLs
  • Multiple failed attempts to access unauthorized domains through the image service

Network Indicators:

  • Outbound requests from the server to unexpected external domains
  • Unusual traffic patterns to the image optimization endpoint

SIEM Query:

source="web_server" AND (uri="*image*" OR uri="*optimize*") AND (referer="*http://*" OR referer="*https://*") AND NOT referer="*yourdomain.com*")

🔗 References

📤 Share & Export