CVE-2023-30589: HTTP Request Smuggling via Empty headers separated by CR

Published Jun 20, 2023
·
Updated

Last updated 24 July 2024

Other sources

Node.js is vulnerable to HTTP request smuggling, caused by the failure to strictly use the CRLF sequence to delimit HTTP requests by the llhttp parser in the http module. By sending specially crafted HTTP request headers, an attacker could exploit this vulnerability to poison the web cache, bypass web application firewall protection, and conduct XSS attacks.

— IBM

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

The llhttp parser in the http module in Node.js does not strictly use the CRLF sequence to delimit HTTP requests.

— Node.Js

Affected Software

26 affected componentsFixes available
npm/llhttp<8.1.1
8.1.1
IBM Cognos Dashboards on Cloud Pak for Data<=4.7.0
Nodejs Node.js>=16.0.0<16.20.1
Nodejs Node.js>=18.0.0<18.16.1
Nodejs Node.js>=20.0.0<20.3.1
Fedoraproject Fedora=37
Fedoraproject Fedora=38
Nodejs Node.js=16.0.0
Nodejs Node.js=18.0.0
Nodejs Node.js=20.0.0
Nodejs Node.js=20.2.0
Node.js Node.js>=16.0.0<16.20.1, >=18.0.0<18.16.1, >=20.0.0<20.3.1
16.20.118.16.120.3.1
Node.js Node.js>=16.0.0<16.20.1
16.20.1
Node.js Node.js>=18.0.0<18.16.1
18.16.1
Node.js Node.js>=20.0.0<20.3.1
20.3.1
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
alpine/openjdk17<17.0.9_p8-r0
17.0.9_p8-r0
debian/llhttp
9.4.3+~cs12.11.9-2
debian/nodejs
18.20.4+dfsg-1~deb12u218.20.4+dfsg-1~deb12u320.19.2+dfsg-1+deb13u220.19.2+dfsg-1+deb13u324.21.0+dfsg+~cs24.13.4-124.22.2+dfsg+~cs24.19.2-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/llhttp to a version that resolves this vulnerability.

    Fixed in 8.1.1
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 16.20.1Fixed in 18.16.1Fixed in 20.3.1
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 16.20.1
  4. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 18.16.1
  5. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 20.3.1
  6. Upgrade

    Upgrade alpine/openjdk17 to a version that resolves this vulnerability.

    Fixed in 17.0.9_p8-r0
  7. Upgrade

    Upgrade debian/llhttp to a version that resolves this vulnerability.

    Fixed in 9.4.3+~cs12.11.9-2
  8. Upgrade

    Upgrade debian/nodejs to a version that resolves this vulnerability.

    Fixed in 18.20.4+dfsg-1~deb12u2Fixed in 18.20.4+dfsg-1~deb12u3Fixed in 20.19.2+dfsg-1+deb13u2Fixed in 20.19.2+dfsg-1+deb13u3Fixed in 24.21.0+dfsg+~cs24.13.4-1Fixed in 24.22.2+dfsg+~cs24.19.2-1

Event History

Jun 20, 2023
CVE Published
via Node.js·02:30 PM
Data Sourced
via Node.js·02:30 PM
DescriptionSeverity
Data Sourced
via Node.js·07:27 PM
Affected Software
Jun 30, 2023
CVE Published
via MITRE·11:39 PM
Data Sourced
via MITRE·11:39 PM
Description
Jul 1, 2023
Data Sourced
via NVD·12:15 AM
RemedyDescriptionSeverityAffected Software
Data Sourced
via OSV·12:15 AM
DescriptionSeverityAffected Software
Advisory Published
via GitHub·12:30 AM
Data Sourced
via GitHub·12:30 AM
DescriptionSeverityAffected Software
Jul 5, 2023
Data Sourced
via Red Hat·03:03 PM
DescriptionSeverityAffected Software

Peer vulnerabilities

Found alongside the following vulnerabilities.

Frequently Asked Questions

1

What is CVE-2023-30589?

CVE-2023-30589 is a vulnerability in the llhttp parser in the http module in Node v20.2.0 that can lead to HTTP Request Smuggling (HRS).

2

How does CVE-2023-30589 affect Node.js?

CVE-2023-30589 affects Node.js versions 16.0.0, 18.0.0, 20.0.0, and 20.2.0.

3

What is the severity of CVE-2023-30589?

CVE-2023-30589 has a severity rating of high.

4

How can I fix CVE-2023-30589?

To fix CVE-2023-30589, update the llhttp package to version 8.1.1 or higher.

5

Where can I find more information about CVE-2023-30589?

You can find more information about CVE-2023-30589 at the following references: [NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-30589), [HackerOne](https://hackerone.com/reports/2001873), [GitHub](https://github.com/nodejs/llhttp/releases/tag/release%2Fv8.1.1).

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203