CVE-2023-30589

nodejs: HTTP Request Smuggling via Empty headers separated by CR

Published Jun 30, 2023 CVSS 3.1 · 7.5 High EPSS 3.9% KEV · Not listed
Description
The llhttp parser in the http module in Node v20.2.0 does not strictly use the CRLF sequence to delimit HTTP requests. This can lead to HTTP Request Smuggling (HRS).

The CR character (without LF) is sufficient to delimit HTTP header fields in the llhttp parser. According to RFC7230 section 3, only the CRLF sequence should delimit each header-field. This impacts all Node.js active versions: v16, v18, and, v20

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-3886-1 nodejs security update
Debian DSA Debian DSA DSA-5589-1 nodejs security update
EUVD EUVD EUVD-2023-2033 The llhttp parser in the http module in Node v20.2.0 does not strictly use the CRLF sequence to delimit HTTP requests. This can lead to HTTP Request Smuggling (HRS). The CR character (without LF) is sufficient to delimit HTTP header fields in the llhttp parser. According to RFC7230 section 3, only the CRLF sequence should delimit each header-field. This impacts all Node.js active versions: v16, v18, and, v20
Github GHSA Github GHSA GHSA-cggh-pq45-6h9x llhttp vulnerable to HTTP request smuggling
Ubuntu USN Ubuntu USN USN-6735-1 Node.js vulnerabilities
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Metrics epss

{'score': 0.01422}

epss

{'score': 0.01461}

Type Values Removed Values Added
Description The llhttp parser in the http module in Node v20.2.0 does not strictly use the CRLF sequence to delimit HTTP requests. This can lead to HTTP Request Smuggling (HRS). The CR character (without LF) is sufficient to delimit HTTP header fields in the llhttp parser. According to RFC7230 section 3, only the CRLF sequence should delimit each header-field. This impacts all Node.js active versions: v16, v18, and, v20 The llhttp parser in the http module in Node v20.2.0 does not strictly use the CRLF sequence to delimit HTTP requests. This can lead to HTTP Request Smuggling (HRS). The CR character (without LF) is sufficient to delimit HTTP header fields in the llhttp parser. According to RFC7230 section 3, only the CRLF sequence should delimit each header-field. This impacts all Node.js active versions: v16, v18, and, v20
Weaknesses

Sources

Status
PUBLISHED
Assigner
hackerone
Published
Updated
Oct 8, 2026, 9:13 PM
Reserved
Apr 13, 2023, 1:00 AM
Status
Modified
Published
Jul 1, 2023, 12:15 AM
Modified
Oct 8, 2026, 10:17 PM
Severity
Moderate
Public date
Jun 20, 2023, 12:00 AM