{"id":"CVE-2025-58179","aliases":["GHSA-qpr4-c339-7vq8"],"url":"https://o3.security/vulnerability/CVE-2025-58179","summary":"Astro Cloudflare adapter is vulnerable to Server-Side Request Forgery via /_image endpoint","details":"### Summary\n\nWhen using Astro's Cloudflare adapter (`@astrojs/cloudflare`) configured with `output: 'server'` while using the default `imageService: 'compile'`, the generated image optimization endpoint doesn't check the URLs it receives, allowing content from unauthorized third-party domains to be served.\n\n### Details\n\nOn-demand rendered sites built with Astro include an `/_image` endpoint, which returns optimized versions of images.\n\nThe `/_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`](https://docs.astro.build/en/reference/configuration-reference/#imagedomains) or [`image.remotePatterns`](https://docs.astro.build/en/reference/configuration-reference/#imageremotepatterns) options).\n\nHowever, a bug in impacted versions of the `@astrojs/cloudflare` adapter for deployment on Cloudflare’s infrastructure, allows an attacker to bypass the third-party domain restrictions and serve any content from the vulnerable origin.\n\n### PoC\n\n1. Create a new minimal Astro project (`astro@5.13.3`)\n\n2. Configure it to use the Cloudflare adapter (`@astrojs/cloudflare@12.6.5`) and server output:\n\n   ```js\n   // astro.config.mjs\n   import { defineConfig } from 'astro/config';\n   import cloudflare from '@astrojs/cloudflare';\n\n   export default defineConfig({\n     output: 'server',\n     adapter: cloudflare(),\n   });\n   ```\n\n3. Deploy to Cloudflare Pages or Workers\n\n4. Append `/_image?href=https://placehold.co/600x400` to the deployment URL.\n\n7. This will serve the placeholder image from the unauthorised `placehold.co` domain.\n\n### Impact\n\nAllows a non-authorized third-party to create URLs on an impacted site’s origin that serve unauthorized content. This includes the risk of server-side request forgery (SSRF) and by extension cross-site scripting (XSS) if a user follows a link to a maliciously crafted URL.","published":"2025-09-04T23:36:44.393Z","modified":"2026-08-12T03:51:35.424239272Z","cvss":{"score":7.2,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N"},"epss":{"score":0.00829,"percentile":0.54091,"asOf":"2026-08-09"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"@astrojs/cloudflare","fixedVersion":"12.6.6"}],"fix":{"url":"https://github.com/withastro/astro/commit/9ecf3598e2b29dd74614328fde3047ea90e67252","label":"withastro/astro@9ecf359"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/58xxx/CVE-2025-58179.json"},{"type":"ADVISORY","url":"https://github.com/withastro/astro/security/advisories/GHSA-qpr4-c339-7vq8"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-58179"},{"type":"FIX","url":"https://github.com/withastro/astro/commit/9ecf3598e2b29dd74614328fde3047ea90e67252"},{"type":"PACKAGE","url":"https://github.com/withastro/astro"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:35.424239272Z"}}