CVE-2026-102983: Astro Netlify Image CDN Allowlist Bypass Vulnerability
MODERATECVE-2026-102983 is a MODERATE netlify image cdn allowlist bypass vulnerability (CWE-918: Server-Side Request Forgery (SSRF)) affecting Astro libraries in the npm ecosystem. The issue involves netlify image cdn allowlist bypass enables ssrf. Remediation is available by upgrading affected packages to version 8.2.4.
CVE-2026-102983 at a Glance
How to Fix CVE-2026-102983
To remediate this vulnerability, upgrade all affected Astro dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install @astrojs/netlify@8.2.4
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls @astrojs/netlify
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2026-102983, inspect your project dependencies using npm:
npm ls @astrojs/netlify
Analyze the terminal output to locate any version of Astro in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 8.2.4), your application is affected.
Note: The npm ls @astrojs/netlify command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-918: Server-Side Request Forgery (SSRF), where the web server receives a url or similar request from an upstream component and retrieves the contents of this url, but it does not sufficiently ensure that the request is being sent to the expected destination. In Astro, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-102983 Affected Astro Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
@astrojs/netlify
|
npm |
≥ 5.2.0
< 8.2.4
|
8.2.4
|
References
Frequently Asked Questions
What is CVE-2026-102983?
Which Astro versions are affected?
What version fixes CVE-2026-102983?
Is @astrojs/netlify affected?
What CWE is associated with CVE-2026-102983?
How can I check npm dependencies for CVE-2026-102983?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-4233-jc72-56c5",
"modified" : "2026-09-30T23:40:12Z",
"published" : "2026-09-30T23:40:12Z",
"aliases" : [ "CVE-2026-102983" ],
"summary" : "Astro: Netlify Image CDN allowlist bypass enables SSRF",
"details" : "## Summary\n\nThe `@astrojs/netlify` adapter generated regular expressions for Netlify Image CDN remote-image allowlists without anchoring them to the beginning of the URL. Netlify evaluates these expressions with `RegExp.test()`, so an allowed image origin appearing anywhere in a URL, including its path or query string, could satisfy the allowlist.\n\nFor example, an application allowing `images.example.com` could accept a source URL such as:\n\n```text\nhttp://127.0.0.1:6379/?url=https://images.example.com/image.png\n```\n\nThe allowlist matched the approved origin in the query string, but Netlify parsed and fetched the URL whose actual host was `127.0.0.1`.\n\n## Impact\n\nAn unauthenticated attacker can bypass the configured `image.domains` or `image.remotePatterns` allowlist through the public `/.netlify/images` endpoint and cause Netlify Image CDN to make requests to attacker-selected URLs. This may allow probing or reaching internal services, depending on Netlify's network-level egress protections.\n\nThe Image CDN attempts to transform responses as images, which limits direct response exfiltration. No confidentiality or integrity impact has been demonstrated.\n\n## Affected versions\n\n`@astrojs/netlify` versions from 5.2.0 through 8.2.3.\n\n## Patches\n\nFixed in `@astrojs/netlify` 8.2.4. Generated remote-image allowlist expressions are now anchored to both the beginning and end of the source URL.\n\n## Workarounds\n\nUpgrade to `@astrojs/netlify` 8.2.4 or later. Before upgrading, disable Netlify Image CDN by setting `imageCDN: false` in the adapter configuration, or remove remote image allowlist entries.\n\n## Credits\n\nReported by @pacocartones.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "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"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "@astrojs/netlify"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "5.2.0"
}, {
"fixed" : "8.2.4"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 8.2.3"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/withastro/astro/security/advisories/GHSA-4233-jc72-56c5"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-102983"
}, {
"type" : "WEB",
"url" : "https://github.com/withastro/astro/pull/17752"
}, {
"type" : "WEB",
"url" : "https://github.com/withastro/astro/commit/e362d4cf540b27730482455c8fc02efe57d16702"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/withastro/astro"
}, {
"type" : "WEB",
"url" : "https://github.com/withastro/astro/releases/tag/@astrojs/netlify@8.2.4"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-625", "CWE-918" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-09-30T23:40:12Z",
"nvd_published_at" : "2026-09-30T15:22:22Z"
}
}