Skip to main content

Astro Netlify Adapter CVE-2026-73425

| EUVDEUVD-2026-57610 LOW
Incorrect Regular Expression (CWE-185)
2026-08-12 GitHub_M
3.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify Netlify-hosted Astro site with Image CDN
  2. Delivery
    Discover allowlisted hostname via CDN response headers or JS
  3. Exploit
    Craft URL with metacharacter-exploiting path variation
  4. Execution
    Submit optimization request to Netlify CDN endpoint
  5. Persist
    Overly-broad regex matches unintended path
  6. Impact
    CDN optimizes and serves restricted image

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Incorrect input validation
Exploitation Conditions

Three conditions must all be present: (1) the site uses @astrojs/netlify adapter at a version prior to 8.1.2, (2) at least one image.remotePatterns entry is configured with a literal pathname value containing a regex metacharacter - the most common real-world case is a dot in a version string (e.g., /img/v1.0/) or a file extension - and (3) the built site is deployed to Netlify with Netlify Image CDN active. Exploitation is bounded to hostnames already present in the allowlist; the attacker cannot introduce new hosts. There is no authentication requirement to call Netlify's image optimization endpoint. Sites that use only wildcard pathnames (/**) or pathnames free of metacharacters are not affected even if running a vulnerable version, because the regex generated for those patterns already matches the broader set the developer intended.

Impact

The provided CVSS 3.7 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) is consistent with independent analysis. AC:H correctly reflects that exploitation requires the target deployment to have configured a pathname containing at least one regex metacharacter (most commonly a literal dot in a version string or filename extension), which is a non-universal but realistic configuration. The confidentiality impact is limited to C:L: an attacker can cause Netlify's CDN to optimize and serve images from path variations that should be excluded, but only on hostnames already present in the allowlist - no new hosts can be added and there is no integrity or availability impact. EPSS data was not provided in the input; given the narrow exploitation prerequisites and absence from CISA KEV, real-world exploitation probability is assessed as low. A proof-of-concept is publicly available in the GHSA advisory, which modestly elevates urgency, but the low severity and specific prerequisites mean this is not a broad-blast-radius priority. The discrepancy between PR:N in the CVSS vector and the fact that only developer-controlled configurations trigger the flaw is worth noting: the vulnerability is introduced at build time by the developer's own config, but the exploitation window is Netlify's CDN endpoint which is unauthenticated.

Exploit ScenarioDerived

An attacker inspecting a Netlify-hosted Astro site's public CDN behavior identifies that the site allows image optimization for cdn.example.com. They request Netlify's image optimization endpoint with a URL pointing to https://cdn.example.com/img/v1X0/secret-file - where X replaces the dot in a version path segment - and Netlify's CDN processes the request because the unescaped dot in the generated allowlist regex matches any character, including the substituted character. A proof-of-concept demonstrating this exact bypass (including path-segment crossing via /) is included in GHSA-hp3v-mfqw-h74c.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 12, 2026

Regex metacharacter injection in @astrojs/netlify prior to 8.1.2 causes the Netlify Image CDN allowlist to be broader than the developer intended, allowing optimization of images from unintended URL paths on already-allowed hostnames. The root cause is that remotePatternToRegex() escapes dots in hostnames but passes literal pathname values into the generated regex unescaped, so a pathname like /img/v1.0/file silently becomes a wildcard that matches /img/v1X0/file or /img/v1/0/file. No active exploitation has been confirmed (not in CISA KEV), though a working proof-of-concept is included in the GHSA advisory; CVSS 3.7 with AC:H reflects the constrained but network-accessible impact.

RemediationAI

Upgrade @astrojs/netlify to version 8.1.2, which introduces proper regex metacharacter escaping for pathname values in remotePatternToRegex(). The fix is confirmed in the vendor security advisory at https://github.com/withastro/astro/security/advisories/GHSA-hp3v-mfqw-h74c and the upstream pull request at https://github.com/withastro/astro/pull/17018. As a compensating control prior to patching, inspect the generated .netlify/v1/config.json after each build and manually verify that the images.remote_images regexes are as restrictive as intended - any unescaped . in the pathname portion of a regex is a red flag. A second compensating control is to avoid dots and other metacharacters (., +, ?, (, [) in literal pathname values within image.remotePatterns until the patch is applied; note this may require renaming URL path segments which could have application-level side effects. Rebuilding and redeploying after upgrading to 8.1.2 is required to regenerate the config.json with the corrected regexes.

Affected VersionsENISA

astro < 8.1.2

Affected Packages

npm @astrojs/netlify fix: 8.1.2
euvd astro fix: 8.1.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 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

The affected component is the @astrojs/netlify integration package (cpe:2.3:a:withastro:astro:*:*:*:*:*:*:*:*), which generates .netlify/v1/config.json during astro build. The remotePatternToRegex() function in packages/integrations/netlify/src/index.ts correctly escapes dots in the hostname segment using hostname.replace(/\./g, '\\.') but interpolates the pathname value verbatim into all three regex branches - including the exact-match branch - without calling a metacharacter escape routine. This is classified as CWE-185 (Incorrect Regular Expression). The security boundary is the generated regex itself: Netlify's Image CDN enforces it directly at the edge, and Astro's runtime matchPattern() helper (which performs exact string comparison for non-wildcard pathnames) is not in the critical path for Netlify-served image requests, eliminating any compensating layer. This is a residual of the same bug class partially addressed in CVE-2026-54300 (PR #17018), which added a $ anchor and fixed wildcard semantics but did not introduce metacharacter escaping for literal pathname values.

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 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 3.7 LOW

Netlify CDN endpoint is network-reachable with no auth (AV:N/PR:N), but exploitation requires a metacharacter-containing pathname in dev config (AC:H); impact is limited to partial image path disclosure with no integrity or availability effect.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Aug 12, 2026 - 22:03 EUVD

DescriptionCVE.org

Astro is a web framework for content-driven websites. Prior to 8.1.2, the Astro Netlify adapter converts each image.remotePatterns entry into a regular expression written to .netlify/v1/config.json under images.remote_images for Netlify's Image CDN allowlist. In packages/integrations/netlify/src/index.ts, remotePatternToRegex() escapes dots in hostname values but interpolates literal pathname values without escaping regular expression metacharacters such as ., +, ?, (, and [, so a restrictive pathname such as /img/v1.0/file also matches metacharacter-adjacent paths, including paths that cross a segment. Netlify enforces the generated regular expression directly and Astro's matchPattern() helper does not revalidate the request, allowing optimization of images on an already-allowed host that the declared pathname was intended to exclude. This issue is fixed in version 8.1.2.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Medium
popular framework, but Netlify adapter narrows affected population significantly
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 LOW
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +18
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

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-2026-59731 HIGH POC
8.2 Jul 08

Authorization bypass in the Astro web framework version 6.4.7 lets remote unauthenticated attackers reach protected rout

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-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-64765 MEDIUM POC
6.9 Nov 19

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

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

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