Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Astro/@astrojs/node origin not shielded by CDN
-
DeliverySend HTTP request with malformed Host port
-
ExploitConstructed request URL is invalid
-
ExecutionRecovery path rethrows uncaught TypeError
-
PersistNode process terminates (staticHeaders enabled)
-
ImpactService 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. |
| 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 |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
SQL Injection exists in the Saxum Astro 4.0.14 component for Joomla!. Rated critical severity (CVSS 9.8), this vulnerabi
Astro web framework versions prior to 9.5.4 contain a server-side request forgery vulnerability in error page handling t
Astro is a web framework for content-driven websites. Rated high severity (CVSS 7.8), this vulnerability is remotely exp
Server-side request forgery in Astro's built-in image proxy lets unauthenticated remote attackers force the server to fe
Astro is a web framework for content-driven websites. Rated high severity (CVSS 7.2), this vulnerability is remotely exp
Astro is a web framework. Rated high severity (CVSS 7.1), this vulnerability is remotely exploitable, no authentication
Astro is a web framework for content-driven websites. Rated medium severity (CVSS 6.9), this vulnerability is remotely e
Astro is a web framework. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitable, no authenticatio
Unvalidated reflection of the X-Forwarded-Host header in Astro (versions before 5.14.3) lets remote, unauthenticated att
Astro web framework versions 9.0.0 through 9.5.3 fail to validate remote image domains when the inferSize option is enab
Base-path prefix bypass in Astro prior to 7.2.4 allows unauthenticated remote attackers to reach protected server-side r
Astro is a web framework for content-driven websites. Rated medium severity (CVSS 5.5), this vulnerability is remotely e
EUVD-2026-89970
GHSA-qh8j-hqjv-7m4x
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB