Skip to content

@hono/node-server has Denial of Service risk when receiving Host header that cannot be parsed

High severity GitHub Reviewed Published Apr 19, 2024 in honojs/node-server • Updated Apr 19, 2024

Package

npm @hono/node-server (npm)

Affected versions

>= 1.3.0, < 1.10.1

Patched versions

1.10.1

Description

Impact

The application hangs when receiving a Host header with a value that @hono/node-server can't handle well. Invalid values are those that cannot be parsed by the URL as a hostname such as an empty string, slashes /, and other strings.

For example, if you have a simple application:

import { serve } from '@hono/node-server'
import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => c.text('Hello'))

serve(app)

Sending a request with a Host header with an empty value to it:

curl localhost:3000/ -H "Host: "

The results:

node:internal/url:775
    this.#updateContext(bindingUrl.parse(input, base));
                                   ^

TypeError: Invalid URL
    at new URL (node:internal/url:775:36)
    at newRequest (/Users/yusuke/work/h/159/node_modules/@hono/node-server/dist/index.js:137:17)
    at Server.<anonymous> (/Users/yusuke/work/h/159/node_modules/@hono/node-server/dist/index.js:399:17)
    at Server.emit (node:events:514:28)
    at Server.emit (node:domain:488:12)
    at parserOnIncoming (node:_http_server:1143:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17) {
  code: 'ERR_INVALID_URL',
  input: 'http:///'
}

Patches

The version 1.10.1 includes the fix for this issue. But, you should use 1.11.0, which has other fixes related to this issue. honojs/node-server#160 honojs/node-server#161

Workarounds

Nothing. Upgrade your @hono/node-server.

References

honojs/node-server#159

References

@yusukebe yusukebe published to honojs/node-server Apr 19, 2024
Published by the National Vulnerability Database Apr 19, 2024
Published to the GitHub Advisory Database Apr 19, 2024
Reviewed Apr 19, 2024
Last updated Apr 19, 2024

Severity

High
7.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Weaknesses

CVE ID

CVE-2024-32652

GHSA ID

GHSA-hgxw-5xg3-69jx

Source code

Checking history
See something to contribute? Suggest improvements for this vulnerability.