Skip to main content

@astrojs/netlify Adapter CVE-2026-102983

| EUVDEUVD-2026-89969 MEDIUM
Permissive Regular Expression (CWE-625)
2026-09-30 GitHub_M GHSA-4233-jc72-56c5
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Astro site on Netlify with image allowlist
  2. Delivery
    Craft source URL embedding allowed origin in path/query
  3. Exploit
    Send unauthenticated request to /.netlify/images
  4. Execution
    Unanchored regex accepts attacker host
  5. Persist
    Image CDN fetches internal/attacker target
  6. Impact
    Probe or reach internal services

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Permissive regular expression
Exploitation Conditions

Exploitable only when the site is built with the @astrojs/netlify adapter (versions 5.2.0 up to 8.2.4) AND configured to use Netlify Image CDN with a remote-image allowlist via image.domains or image.remotePatterns; the vulnerable regexes are generated from those settings. The /.netlify/images endpoint must be publicly reachable (its default state). No authentication or user interaction is required (PR:N/UI:N). Exploitation is LIMITED by Netlify egress protections, which constrain which internal/external targets are actually reachable, and by image-transformation limits, which prevent exfiltrating fetched response bodies - hence AT:P and availability-only impact.

Impact

This is a genuine but low-severity SSRF-class flaw (CWE-625, permissive regex). The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L) scores 6.3 and correctly reflects an unauthenticated network-reachable issue with only limited availability impact (VA:L) and NO confidentiality or integrity impact - the description explicitly states 'no confidentiality or integrity impact has been demonstrated.' The AT:P (attack requirements present) captures that Netlify egress protections constrain reachable targets and image-transformation limits prevent direct response exfiltration, so the practical impact is server-side request forgery for internal probing/reachability rather than data theft. No EPSS score, no CISA KEV listing, and no public exploit code are provided in the input, so there is no signal of active or automatable exploitation. The 6.3 'medium' rating is somewhat generous relative to real-world risk: the actual demonstrated impact is limited to causing the Image CDN to fetch attacker-selected URLs, with egress filtering and transformation limits blunting most useful outcomes. Note the 'Information Disclosure' tag overstates impact - the CVE explicitly disclaims confidentiality/integrity impact; the true nature is SSRF/internal-service probing. Priority is low-to-medium: patch as routine hygiene, prioritized only for sites relying on image.domains/image.remotePatterns allowlists as a security boundary.

Exploit ScenarioDerived

An attacker sends an unauthenticated request to the public /.netlify/images endpoint on an Astro site deployed via @astrojs/netlify, supplying a source URL like 'http://169.254.169.254/latest/meta-data/?url=https://allowed-origin.example/image.jpg'. Because the generated allowlist regex is not anchored to the start of the URL, the allowed origin appearing only in the query string satisfies RegExp.test(), so the Image CDN fetches the attacker-controlled host and can probe internal services (e.g., cloud metadata endpoints, 127.0.0.1:6379). No public exploit code is identified at time of analysis, though the fixing PR includes explicit regression tests demonstrating the bypass payloads.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 30, 2026

Server-side request forgery in the @astrojs/netlify adapter (5.2.0 through 8.2.3) lets unauthenticated remote attackers make the Netlify Image CDN fetch URLs whose host they control, by embedding an allowlisted origin inside the path or query string of a request to the public /.netlify/images endpoint. The impact is limited: Netlify egress protections restrict which internal or external targets are actually reachable and image-transformation handling prevents fetched response bodies from being returned to the attacker, so no confidentiality or integrity impact has been demonstrated and only low availability impact is assessed (CVSS 6.3 per the 4.0 vector; independent assessment CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L). No public exploit code has been identified at time of analysis, and the flaw is fixed in @astrojs/netlify 8.2.4.

RemediationAI

Upgrade to @astrojs/netlify 8.2.4, which anchors the generated allowlist regular expressions at both ends and is the vendor-released patch for this issue (release tag: https://github.com/withastro/astro/releases/tag/@astrojs/netlify@8.2.4; advisory: https://github.com/withastro/astro/security/advisories/GHSA-4233-jc72-56c5; fix commit: e362d4cf540b27730482455c8fc02efe57d16702, PR #17752). If an immediate upgrade is not possible, the effective compensating control is to narrow the trigger: remove or minimize image.domains and image.remotePatterns entries so fewer origins can be matched, or disable Netlify Image CDN remote images entirely (the trade-off is loss of remote image optimization for legitimate hosts). Because the endpoint /.netlify/images is public by default, restrict or block it at the edge for untrusted clients via Netlify redirect/edge rules or access controls, accepting that this also blocks legitimate image transformation requests. Note that the flawed regexes are generated internally by the adapter, so users cannot patch them through configuration alone; only upgrading the adapter fixes the root cause. Monitor Netlify egress logs for outbound requests to internal address ranges (169.254.0.0/16, 127.0.0.0/8, RFC1918 space) as a detection measure for exploitation attempts.

Affected VersionsENISA

astro 5.2.0, < 8.2.4
netlify 5.2.0, < 8.2.4

Affected Packages

npm @astrojs/netlify fix: 8.2.4
euvd astro_5_2_0 fix: 8.2.4
euvd netlify_5_2_0 fix: 8.2.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

CWE-625 (Permissive Regular Expression) is the root cause. The adapter's remotePatternToRegex() and remoteImagesFromAstroConfig() helpers built pattern strings for Netlify Image CDN remote-image allowlists without a leading '^' anchor (e.g. 'https?:\/\/<allowed-domain>\/.*'). Because Netlify evaluates the allowlist with RegExp.prototype.test(), which succeeds on any substring match, a URL such as 'http://169.254.169.254/latest/meta-data/?url=https://example.net/image.jpg' satisfies the allowlist for 'example.net' even though the request's actual host is the attacker-selected 169.254.169.254. This turns the image-optimization pipeline into an SSRF primitive: the publicly reachable /.netlify/images endpoint forwards the crafted URL to the Image CDN, which then issues an outbound request to the attacker-chosen destination, potentially probing internal services (cloud metadata endpoints, localhost services, etc.). The fix in PR #17752 anchors the generated expressions ('^...$') and adds regression tests confirming that embedded patterns in another URL are rejected. Exploitation requires the site to be built with the adapter AND to configure image.domains or image.remotePatterns; the regexes are derived directly from those user settings, so deployments without a remote-image allowlist are not exposed.

Know when Astro gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
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
vuln.today AI 3.7 LOW

Unauthenticated network SSRF (PR:N/AV:N) but AC:H reflects egress/transform constraints; no demonstrated confidentiality or integrity, only limited availability/probing impact (A:L).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Sep 30, 2026 - 15:17 EUVD

DescriptionCVE.org

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. 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.

Threat Intelligence Overview

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Medium
popular framework but narrows to Netlify adapter with image-allowlist config
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

33
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Astro

View all
CVE-2018-7180 CRITICAL POC
9.8 Feb 17

SQL Injection exists in the Saxum Astro 4.0.14 component for Joomla!. Rated critical severity (CVSS 9.8), this vulnerabi

CVE-2026-25545 HIGH POC
8.6 Feb 24

Astro web framework versions prior to 9.5.4 contain a server-side request forgery vulnerability in error page handling t

CVE-2024-56159 HIGH POC
7.8 Dec 19

Astro is a web framework for content-driven websites. Rated high severity (CVSS 7.8), this vulnerability is remotely exp

CVE-2025-59837 HIGH POC
7.2 Oct 28

Server-side request forgery in Astro's built-in image proxy lets unauthenticated remote attackers force the server to fe

CVE-2025-58179 HIGH POC
7.2 Sep 05

Astro is a web framework for content-driven websites. Rated high severity (CVSS 7.2), this vulnerability is remotely exp

CVE-2025-64764 HIGH POC
7.1 Nov 19

Astro is a web framework. Rated high severity (CVSS 7.1), this vulnerability is remotely exploitable, no authentication

CVE-2025-55303 MEDIUM POC
6.9 Aug 19

Astro is a web framework for content-driven websites. Rated medium severity (CVSS 6.9), this vulnerability is remotely e

CVE-2025-64525 MEDIUM POC
6.5 Nov 13

Astro is a web framework. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitable, no authenticatio

CVE-2025-61925 MEDIUM POC
6.5 Oct 10

Unvalidated reflection of the X-Forwarded-Host header in Astro (versions before 5.14.3) lets remote, unauthenticated att

CVE-2026-27829 MEDIUM POC
6.5 Feb 26

Astro web framework versions 9.0.0 through 9.5.3 fail to validate remote image domains when the inferSize option is enab

CVE-2026-84376 MEDIUM POC
6.3 Sep 02

Base-path prefix bypass in Astro prior to 7.2.4 allows unauthenticated remote attackers to reach protected server-side r

CVE-2025-54793 MEDIUM POC
5.5 Aug 08

Astro is a web framework for content-driven websites. Rated medium severity (CVSS 5.5), this vulnerability is remotely e

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy