{"id":"CVE-2026-102983","title":"Astro is a web framework for content-driven websites","summary":"Astro is a web framework for content-driven websites. From 5.2.0 until 8.2.4, the @astrojs/netlify adapter generates regular expressions for Netlify Image CDN remote-image allowlists without anchoring them to the beginning of the URL. Be…","severity":"medium","cvss":6.3,"cvssVector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","cwe":["CWE-625","CWE-918"],"vendor":"withastro","product":"astro","affected":["astro >= 5.2.0, < 8.2.4","netlify >= 5.2.0, < 8.2.4"],"published":"2026-09-30","updated":"2026-09-30","sourceUpdated":"2026-09-30T19:38:27.293","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-102983","references":[{"url":"https://github.com/withastro/astro/commit/e362d4cf540b27730482455c8fc02efe57d16702","label":"security-advisories@github.com"},{"url":"https://github.com/withastro/astro/pull/17752","label":"security-advisories@github.com"},{"url":"https://github.com/withastro/astro/releases/tag/@astrojs/netlify@8.2.4","label":"security-advisories@github.com"},{"url":"https://github.com/withastro/astro/security/advisories/GHSA-4233-jc72-56c5","label":"security-advisories@github.com"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102983"},{"url":"https://github.com/advisories/GHSA-4233-jc72-56c5"}],"tags":["nvd","cve.org","ghsa","npm"],"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"partial","timestamp":"2026-09-30T16:22:22.386566Z"},"cvssSource":"cna","ingestedAt":"2026-09-30T15:07:05.384Z","aliases":["GHSA-4233-jc72-56c5"],"ecosystem":"npm","patched":["@astrojs/netlify 8.2.4"],"epss":0.0031,"epssPercentile":0.23758,"slug":"CVE-2026-102983","body":"## Overview\n\nAstro is a web framework for content-driven websites. From 5.2.0 until 8.2.4, the @astrojs/netlify adapter generates regular expressions for Netlify Image CDN remote-image allowlists without anchoring them to the beginning of the URL. Because Netlify evaluates these expressions with RegExp.test(), an allowed origin appearing only in a source URL's path or query can satisfy image.domains or image.remotePatterns while the URL's actual host remains attacker-controlled. An unauthenticated request to the public /.netlify/images endpoint can therefore cause the Image CDN to request attacker-selected URLs and may probe or reach internal services. Netlify egress protections may constrain reachable targets, and image transformation limits direct response exfiltration; no confidentiality or integrity impact has been demonstrated. This issue is fixed in version 8.2.4.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-102983)\n\nAffected packages:\n\n- `@astrojs/netlify >= 5.2.0, <= 8.2.3`\n\nPatched in:\n\n- `@astrojs/netlify 8.2.4`\n\nSource: https://github.com/advisories/GHSA-4233-jc72-56c5","depth":"sunlit","depthScore":35,"depthScoreParts":{"impact":34.7,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}