- -------------------------------------------------------------------------
Debian LTS Advisory DLA-3886-1                debian-lts@lists.debian.org
https://www.debian.org/lts/security/                   Bastien Roucariès
September 14, 2024                            https://wiki.debian.org/LTS
- -------------------------------------------------------------------------

Package        : nodejs
Version        : 12.22.12~dfsg-1~deb11u5
CVE ID         : CVE-2023-30589 CVE-2023-30590 CVE-2023-32559 CVE-2023-46809 
                 CVE-2024-22019 CVE-2024-22025 CVE-2024-27982 CVE-2024-27983

Node.js a JavaScript runtime environment that executes JavaScript code
outside a web browser (server side) was vulnerable.

CVE-2023-30589

    The llhttp parser in the http module in Node 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.

CVE-2023-30590

    The generateKeys() API function returned from
    crypto.createDiffieHellman() only generates missing (or outdated)
    keys, that is, it only generates a private key if none has been
    set yet, but the function is also needed to compute the
    corresponding public key after calling setPrivateKey(). However,
    the documentation says this API call: "Generates private and
    public Diffie-Hellman key values". The documented behavior is very
    different from the actual behavior, and this difference could
    easily lead to security issues.

CVE-2023-32559

    A privilege escalation vulnerability exists in the experimental
    policy mechanism.
    The use of the deprecated API `process.binding()` can bypass
    the policy mechanism by requiring internal modules and eventually
    take advantage of `process.binding('spawn_sync')` run arbitrary
    code, outside of the limits defined in a `policy.json` file

CVE-2023-46809

    Node.js versions are vulnerable to the Marvin Attack,
    if PCKS #1 v1.5 padding is allowed when performing RSA descryption
    using a private key.

CVE-2024-22019

    A vulnerability in Node.js HTTP servers allows an attacker to send a
    specially crafted HTTP request with chunked encoding, leading
    to resource exhaustion and denial of service (DoS).
    The server reads an unbounded number of bytes from a single connection,
    exploiting the lack of limitations on chunk extension bytes.
    The issue can cause CPU and network bandwidth exhaustion, bypassing
    standard safeguards like timeouts and body size limits.

CVE-2024-22025

    A vulnerability in Node.js has been identified, allowing for a
    Denial of Service (DoS) attack through resource exhaustion when
    using the fetch() function to retrieve content from an untrusted URL.
    The vulnerability stems from the fact that the fetch() function in Node.js
    always decodes Brotli, making it possible for an attacker to cause
    resource exhaustion when fetching content from an untrusted URL.
    An attacker controlling the URL passed into fetch() can exploit this
    vulnerability to exhaust memory, potentially leading to process
    termination, depending on the system configuration.

CVE-2024-27982

    Malformed headers can lead to HTTP request smuggling. Specifically,
    if a space is placed before a content-length header, it is not
    interpreted correctly, enabling attackers to smuggle in a
    second request within the body of the first.

CVE-2024-27983

    An attacker can make the Node.js HTTP/2 server completely
    unavailable by sending a small amount of HTTP/2 frames packets
    with a few HTTP/2 frames inside. It is possible to leave some data
    in nghttp2 memory after reset when headers with HTTP/2
    CONTINUATION frame are sent to the server and then a TCP
    connection is abruptly closed by the client triggering the
    Http2Session destructor while header frames are still being
    processed (and stored in memory) causing a race condition.

For Debian 11 bullseye, these problems have been fixed in version
12.22.12~dfsg-1~deb11u5.

We recommend that you upgrade your nodejs packages.

For the detailed security status of nodejs please refer to
its security tracker page at:
https://security-tracker.debian.org/tracker/nodejs

Further information about Debian LTS security advisories, how to apply
these updates to your system and frequently asked questions can be
found at: https://wiki.debian.org/LTS

Debian LTS: DLA-3886-1: nodejs Security Advisory Updates

September 14, 2024
Node.js a JavaScript runtime environment that executes JavaScript code outside a web browser (server side) was vulnerable

Summary

CVE-2023-30589

The llhttp parser in the http module in Node 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.

CVE-2023-30590

The generateKeys() API function returned from
crypto.createDiffieHellman() only generates missing (or outdated)
keys, that is, it only generates a private key if none has been
set yet, but the function is also needed to compute the
corresponding public key after calling setPrivateKey(). However,
the documentation says this API call: "Generates private and
public Diffie-Hellman key values". The documented behavior is very
different from the actual behavior, and this difference could
easily lead to security issues.

CVE-2023-32559

A privilege escalation vulnerability exists in the experimental
policy mechanism.
The use of the deprecated API `process.binding()` can bypass
the policy mechanism by requiring internal modules and eventually
take advantage of `process.binding('spawn_sync')` run arbitrary
code, outside of the limits defined in a `policy.json` file

CVE-2023-46809

Node.js versions are vulnerable to the Marvin Attack,
if PCKS #1 v1.5 padding is allowed when performing RSA descryption
using a private key.

CVE-2024-22019

A vulnerability in Node.js HTTP servers allows an attacker to send a
specially crafted HTTP request with chunked encoding, leading
to resource exhaustion and denial of service (DoS).
The server reads an unbounded number of bytes from a single connection,
exploiting the lack of limitations on chunk extension bytes.
The issue can cause CPU and network bandwidth exhaustion, bypassing
standard safeguards like timeouts and body size limits.

CVE-2024-22025

A vulnerability in Node.js has been identified, allowing for a
Denial of Service (DoS) attack through resource exhaustion when
using the fetch() function to retrieve content from an untrusted URL.
The vulnerability stems from the fact that the fetch() function in Node.js
always decodes Brotli, making it possible for an attacker to cause
resource exhaustion when fetching content from an untrusted URL.
An attacker controlling the URL passed into fetch() can exploit this
vulnerability to exhaust memory, potentially leading to process
termination, depending on the system configuration.

CVE-2024-27982

Malformed headers can lead to HTTP request smuggling. Specifically,
if a space is placed before a content-length header, it is not
interpreted correctly, enabling attackers to smuggle in a
second request within the body of the first.

CVE-2024-27983

An attacker can make the Node.js HTTP/2 server completely
unavailable by sending a small amount of HTTP/2 frames packets
with a few HTTP/2 frames inside. It is possible to leave some data
in nghttp2 memory after reset when headers with HTTP/2
CONTINUATION frame are sent to the server and then a TCP
connection is abruptly closed by the client triggering the
Http2Session destructor while header frames are still being
processed (and stored in memory) causing a race condition.

For Debian 11 bullseye, these problems have been fixed in version
12.22.12~dfsg-1~deb11u5.

We recommend that you upgrade your nodejs packages.

For the detailed security status of nodejs please refer to
its security tracker page at:
https://security-tracker.debian.org/tracker/nodejs

Further information about Debian LTS security advisories, how to apply
these updates to your system and frequently asked questions can be
found at: https://wiki.debian.org/LTS


Severity
Package : nodejs
Version : 12.22.12~dfsg-1~deb11u5
CVE ID : CVE-2023-30589 CVE-2023-30590 CVE-2023-32559 CVE-2023-46809

Related News