{"schema":"threatline.record/2","record":{"id":"CVE-2026-102984","aliases":["GHSA-qh8j-hqjv-7m4x"],"summary":"Astro: Malformed port in the Host header can crash the Node adapter","details":"## Summary\n\nIn the Astro Node adapter, a request whose `Host` header contains a malformed port (for example `example.com:65536` or `example.com:8080:8080`) produced an invalid request URL. The fallback intended to recover from an unparseable URL reused the same malformed host, so it failed again and raised an uncaught `TypeError: Invalid URL` while the request was being built, before any route ran.\n\n## Impact\n\nThe effect depends on the adapter configuration:\n\n- Default configuration (`standalone`): the request returns `500 Internal Server Error` and the server continues running.\n- With the opt-in `staticHeaders: true` option: the throw reaches a synchronous HTTP handler that does not catch it, becoming an `uncaughtException` that terminates the process.\n\nThis is an availability-only issue. It does not expose data or allow code execution. Triggering it requires sending a hand-crafted `Host` header, and many proxies and CDNs reject malformed hosts before they reach the origin.\n\n## Affected versions\n\n`@astrojs/node` <= 11.1.2.\n\n## Patches\n\nFixed in `@astrojs/node` 11.1.3. When the incoming host cannot be parsed, the request URL now degrades to a host the server controls, so the request is handled instead of throwing. Hosts carrying more than a single `hostname:port` pair are also rejected during host validation.\n\n## Workarounds\n\nUpgrade to `@astrojs/node` 11.1.3 or later. Deployments that terminate malformed `Host` headers at a reverse proxy or CDN are not reachable through this path.\n\n## Credits\n\nReported by @Celggar.","categories":["Libraries & packages"],"product":"@astrojs/node","vendor":"withastro","ecosystem":"npm","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-qh8j-hqjv-7m4x","source_modified_at":"2026-09-30T23:29:41Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"npm","name":"@astrojs/node"},"range":"<= 11.1.2"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-102984","source_modified_at":"2026-09-30T19:39:28.485Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"astro","vendor":"withastro","versions":[{"version":"< 11.1.3","status":"affected"}],"defaultStatus":null},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-qh8j-hqjv-7m4x","source_modified_at":"2026-09-30T23:45:04.031843511Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"@astrojs/node","ecosystem":"npm","purl":"pkg:npm/%40astrojs/node"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"11.1.3"}]}],"versions":[]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-qh8j-hqjv-7m4x","source_modified_at":"2026-09-30T23:29:41Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"npm","name":"@astrojs/node"},"version":"11.1.3"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-qh8j-hqjv-7m4x","source_modified_at":"2026-09-30T23:45:04.031843511Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"@astrojs/node","ecosystem":"npm","purl":"pkg:npm/%40astrojs/node"},"version":"11.1.3"}],"cvss":8.2,"severity":"High","kev":{"listed":false},"epss":{"probability":0.00362,"percentile":0.28894,"score_date":"2026-10-23"},"published_at":"2026-09-30T14:35:22.323Z","modified_at":"2026-09-30T23:45:04.031843511Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-qh8j-hqjv-7m4x","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-09-30T23:29:41Z"},{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-102984","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-09-30T19:39:28.485Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-qh8j-hqjv-7m4x","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-09-30T23:45:04.031843511Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-102984","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["GitHub Advisory Database","CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/withastro/astro/security/advisories/GHSA-qh8j-hqjv-7m4x","tags":["x_refsource_CONFIRM"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102984","source":"GitHub Advisory Database"},{"source":"CVE List","url":"https://github.com/withastro/astro/pull/17572","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/withastro/astro/commit/2066f39c60707a100531b4ef4bb5dab8feafa7f2","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/withastro/astro/releases/tag/@astrojs/node@11.1.3","tags":["x_refsource_MISC"]},{"url":"https://github.com/advisories/GHSA-qh8j-hqjv-7m4x","source":"GitHub Advisory Database"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","ssvc":{"exploitation":"none","automatable":"no","technical_impact":"partial","assessed_at":"2026-09-30T19:39:13.907814Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-09-30T23:45:04.031843511Z","content_hash":"80da3975b65efdb319f983f28efe7341ba67fddebc2cb5db4f86a6a9002e7b38"}}
