Skip to main content

Astro Node Adapter CVE-2026-102984

| EUVDEUVD-2026-89970 HIGH
Uncaught Exception (CWE-248)
2026-09-30 GitHub_M GHSA-qh8j-hqjv-7m4x
8.2
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/@astrojs/node origin not shielded by CDN
  2. Delivery
    Send HTTP request with malformed Host port
  3. Exploit
    Constructed request URL is invalid
  4. Execution
    Recovery path rethrows uncaught TypeError
  5. Persist
    Node process terminates (staticHeaders enabled)
  6. Impact
    Service outage / denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
Exploitation Conditions

Requires the site to be served by the @astrojs/node adapter (versions prior to 11.1.3) and reachable such that a client-supplied Host header with a malformed port (invalid port number like :65536/:99999/:-1/:abc, or a duplicated port like example.com:8080:8080) reaches the origin. Full impact (Node process termination) requires the non-default staticHeaders option to be ENABLED; in the default standalone configuration the flaw only causes an HTTP 500 with the server remaining up. LIMITING FACTORS: any fronting proxy or CDN that rejects malformed Host headers blocks the request before it reaches the origin, neutralizing the attack; impact is availability-only with no data exposure or code execution.

Impact

This is a genuine but bounded availability issue, not a high-impact security event despite the 8.2 CVSS 4.0 score. The vendor vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H) correctly reflects a network-reachable, unauthenticated, low-complexity trigger with attack-requirement AT:P - the elevated impact (full Node process termination) only occurs when the non-default staticHeaders option is enabled; in the default standalone configuration the same malformed Host merely yields an HTTP 500 and the server keeps running. The confidentiality/integrity metrics are correctly zeroed (VC:N/VI:N) - the description and CWE-248 (Uncaught Exception) confirm availability-only impact with no data exposure or code execution. There is no EPSS score, no CISA KEV listing, and no public exploit provided in the input, so this is 'no public exploit identified at time of analysis' - although the fix commit, PR diff, and unit tests publicly document the exact malformed inputs (e.g. example.com:65536, example.com:8080:8080), which materially lowers the barrier to weaponizing a crasher. Key mitigating signal explicitly stated in the advisory: front-end proxies and CDNs that reject malformed Host headers prevent the request from ever reaching the origin, so many production deployments behind a CDN are not exposed. Net: real but low-to-moderate priority, driven by the availability-only impact and the dependency on the staticHeaders configuration for the severe (process-kill) variant.

Exploit ScenarioDerived

An unauthenticated remote attacker sends a raw HTTP request to an Astro site served by @astrojs/node with a malformed port in the Host header, such as Host: example.com:65536 or example.com:8080:8080. When the site runs with staticHeaders enabled, the synchronous handler fails to catch the resulting TypeError: Invalid URL and the Node process terminates, denying service; in the default standalone mode the same request only returns HTTP 500. No public exploit is shipped, but the fixed PR and its test cases openly enumerate the triggering host strings.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.6% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 30, 2026

Improper URL construction in the @astrojs/node adapter for the Astro web framework (versions prior to 11.1.3) allows an unauthenticated remote client to terminate or disrupt a Node-hosted Astro site by sending a Host header whose port cannot be parsed, such as example.com:65536, example.com:99999, example.com:-1, example.com:abc, or a duplicated port like example.com:8080:8080. In the default standalone configuration the malformed host triggers an HTTP 500 while the server keeps running, but when the non-default staticHeaders option is enabled the exception is thrown from a synchronous handler, escapes the adapter's error handling, and crashes the Node process, producing a full availability loss. Impact is availability-only with no data exposure and no code execution path; any fronting proxy or CDN that rejects malformed Host headers prevents the request from reaching the origin and neutralizes the attack. No public exploit code or confirmed active exploitation was identified at time of analysis, and the vendor-released fix is @astrojs/node 11.1.3.

RemediationAI

Upgrade to @astrojs/node 11.1.3 or later, which contains the vendor-released fix (referenced release tag @astrojs/node@11.1.3, advisory GHSA-qh8j-hqjv-7m4x, PR 17572, commit 2066f39c60707a100531b4ef4bb5dab8feafa7f2); the patch makes URL construction degrade to a server-controlled host instead of throwing and rejects hosts with more than two colon-separated segments. If immediate upgrade is not possible, the highest-value compensating control is to place the origin behind a reverse proxy, load balancer, or CDN that validates and rejects requests with malformed or duplicated-port Host headers before forwarding, since such rejection fully blocks the vulnerable code path; the trade-off is dependency on correct front-end configuration and the possibility of rejecting some otherwise legitimate clients that send non-standard hosts. Sites that have enabled the non-default staticHeaders option should either disable it (returning to the HTTP 500 behavior where the process survives, at the cost of losing that feature) or apply the upgrade, and process supervision (PM2, systemd, Kubernetes restart policies) should be configured to auto-restart the Node process so that any residual crash window is minimized. Note that no vendor-released workaround beyond upgrading is documented, and there is no patch-level mitigation that removes the uncaught-exception path while retaining staticHeaders on an unpatched version.

Affected VersionsENISA

astro < 11.1.3

Affected Packages

npm @astrojs/node fix: 11.1.3
euvd astro fix: 11.1.3

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 flaw is an uncaught exception (CWE-248) in the request-ingestion path of the @astrojs/node adapter. The adapter derives the incoming request URL by interpolating the client-supplied Host header into a template such as ${protocol}://${hostname}${req.url} and handing it to the WHATWG URL constructor. A Host header carrying more than a single hostname:port pair or an out-of-range/non-numeric port (for example example.com:8080:8080, example.com:65536, example.com:-1) produces a string the URL parser rejects, and new URL() throws TypeError: Invalid URL before routing begins. The original recovery branch intended to handle this reused the same unvalidated host, so it threw again instead of degrading gracefully. The upstream fix replaces the ad-hoc try/catch with a buildRequestUrl helper that parses in three steps: full URL with path, then origin only (dropping an unparseable path), then a server-controlled fallback host (localhost:<listening port> or localhost). The commit also hardens validate-headers.ts so parseHost returns undefined when a host contains more than two colon-separated segments, preventing an over-long host from validating on its first two segments. The default server path returns HTTP 500 and survives, but the synchronous staticHeaders handler does not catch the exception, so the Node process exits - the availability differential that drives the CVSS A:H rating. Note that the accompanying 'RCE' tag on this record is not corroborated by the advisory, the commit diff, or the independent assessment, all of which describe availability impact only.

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 8.2 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Unauthenticated network request with a trivial malformed header (AC:L, PR:N) crashes the Node process for availability-only impact; A:H applies under the staticHeaders configuration, no C/I impact.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/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
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 30, 2026 - 15:17 EUVD
CVE Published
Sep 30, 2026 - 14:35 cve.org
HIGH 8.2

DescriptionCVE.org

Astro is a web framework for content-driven websites. Prior to 11.1.3, the @astrojs/node adapter builds a request URL from the Host header, and a malformed port can make that URL invalid. The recovery path reuses the same malformed host and throws an uncaught TypeError: Invalid URL before routing begins. In the default standalone configuration, the request returns an HTTP 500 response and the server continues running, but when staticHeaders is enabled the synchronous handler does not catch the exception and the Node process terminates. Proxies and CDNs that reject malformed Host headers prevent this path from reaching the origin. The issue affects availability only and does not expose data or permit code execution. This issue is fixed in version 11.1.3.

Technical POC Analysis

CWE-248 (Uncaught Exception).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Internet-facing websites built with the Astro web framework and hosted on Node through the @astrojs/node adapter carry an availability-only denial-of-service risk: a crafted HTTP Host header can force request errors and, in deployments where the non-default staticHeaders option is enabled, crash the Node process and take the site fully offline. Because the affected component is customer-facing infrastructure, leadership should care about unplanned downtime, SLA exposure, and the operational cost of restarting crashed services, while noting there is no data exposure or code execution path. Sites running in the default standalone configuration are limited to individual failed requests, so exposure is concentrated in environments using the non-default staticHeaders setting.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: deploy a fronting reverse proxy or CDN that rejects malformed Host headers (non-numeric, out-of-range, negative, or duplicated ports) before requests reach the origin, and disable the non-default staticHeaders option in @astrojs/node to keep exceptions inside the adapter's error handling. Apply vendor patch when released.

Threat Intelligence Overview

EPSS Score
0.6%
Top 52% exploitable
Prevalence
Medium
Astro is a widely used JS web framework, but the Node adapter is one deployment option
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 HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

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