ID CVE-2018-12121
Summary Node.js: All versions prior to Node.js 6.15.0, 8.14.0, 10.14.0 and 11.3.0: Denial of Service with large HTTP headers: By using a combination of many requests with maximum sized headers (almost 80 KB per connection), and carefully timed completion of the headers, it is possible to cause the HTTP server to abort from heap allocation failure. Attack potential is mitigated by the use of a load balancer or other proxy layer.
References
Vulnerable Configurations
  • Nodejs Node.js 6.0.0
    cpe:2.3:a:nodejs:node.js:6.0.0
  • Nodejs Node.js 6.1.0
    cpe:2.3:a:nodejs:node.js:6.1.0
  • Nodejs Node.js 6.2.0
    cpe:2.3:a:nodejs:node.js:6.2.0
  • Nodejs Node.js 6.2.1
    cpe:2.3:a:nodejs:node.js:6.2.1
  • Nodejs Node.js 6.2.2
    cpe:2.3:a:nodejs:node.js:6.2.2
  • Nodejs Node.js 6.3.0
    cpe:2.3:a:nodejs:node.js:6.3.0
  • Nodejs Node.js 6.3.1
    cpe:2.3:a:nodejs:node.js:6.3.1
  • Nodejs Node.js 6.4.0
    cpe:2.3:a:nodejs:node.js:6.4.0
  • Nodejs Node.js 6.5.0
    cpe:2.3:a:nodejs:node.js:6.5.0
  • Nodejs Node.js 6.6.0
    cpe:2.3:a:nodejs:node.js:6.6.0
  • Nodejs Node.js 6.7.0
    cpe:2.3:a:nodejs:node.js:6.7.0
  • Nodejs Node.js 6.8.0
    cpe:2.3:a:nodejs:node.js:6.8.0
  • Nodejs Node.js 6.8.1
    cpe:2.3:a:nodejs:node.js:6.8.1
  • Nodejs Node.js 6.9.0
    cpe:2.3:a:nodejs:node.js:6.9.0
  • Nodejs Node.js 6.9.1
    cpe:2.3:a:nodejs:node.js:6.9.1
  • Nodejs Node.js 6.9.2
    cpe:2.3:a:nodejs:node.js:6.9.2
  • Nodejs Node.js 6.9.3
    cpe:2.3:a:nodejs:node.js:6.9.3
  • Nodejs Node.js 6.9.4
    cpe:2.3:a:nodejs:node.js:6.9.4
  • Nodejs Node.js 6.9.5
    cpe:2.3:a:nodejs:node.js:6.9.5
  • Nodejs Node.js 6.10.0
    cpe:2.3:a:nodejs:node.js:6.10.0
  • Nodejs Node.js 6.10.1
    cpe:2.3:a:nodejs:node.js:6.10.1
  • Nodejs Node.js 6.10.2
    cpe:2.3:a:nodejs:node.js:6.10.2
  • Nodejs Node.js 6.10.3
    cpe:2.3:a:nodejs:node.js:6.10.3
  • Nodejs Node.js 6.11.0
    cpe:2.3:a:nodejs:node.js:6.11.0
  • Nodejs Node.js 6.11.1
    cpe:2.3:a:nodejs:node.js:6.11.1
  • nodejs Node.js 6.11.2
    cpe:2.3:a:nodejs:node.js:6.11.2
  • nodejs Node.js 6.11.3
    cpe:2.3:a:nodejs:node.js:6.11.3
  • nodejs Node.js 6.11.4
    cpe:2.3:a:nodejs:node.js:6.11.4
  • Nodejs Node.js 6.11.5
    cpe:2.3:a:nodejs:node.js:6.11.5
  • Nodejs Node.js 6.12.0
    cpe:2.3:a:nodejs:node.js:6.12.0
  • Nodejs Node.js 6.12.1
    cpe:2.3:a:nodejs:node.js:6.12.1
  • Nodejs Node.js 6.12.2
    cpe:2.3:a:nodejs:node.js:6.12.2
  • Nodejs Node.js 6.12.3
    cpe:2.3:a:nodejs:node.js:6.12.3
  • Nodejs Node.js 6.13.0
    cpe:2.3:a:nodejs:node.js:6.13.0
  • Nodejs Node.js 6.13.1
    cpe:2.3:a:nodejs:node.js:6.13.1
  • Nodejs Node.js 6.14.0
    cpe:2.3:a:nodejs:node.js:6.14.0
  • Nodejs Node.js 6.14.1
    cpe:2.3:a:nodejs:node.js:6.14.1
  • Nodejs Node.js 6.14.2
    cpe:2.3:a:nodejs:node.js:6.14.2
  • Nodejs Node.js 6.14.3
    cpe:2.3:a:nodejs:node.js:6.14.3
  • Nodejs Node.js 8.0.0
    cpe:2.3:a:nodejs:node.js:8.0.0
  • Nodejs Node.js 8.1.0
    cpe:2.3:a:nodejs:node.js:8.1.0
  • Nodejs Node.js 8.1.1
    cpe:2.3:a:nodejs:node.js:8.1.1
  • Nodejs Node.js 8.1.2
    cpe:2.3:a:nodejs:node.js:8.1.2
  • Nodejs Node.js 8.1.3
    cpe:2.3:a:nodejs:node.js:8.1.3
  • nodejs Node.js 8.1.4
    cpe:2.3:a:nodejs:node.js:8.1.4
  • nodejs Node.js 8.2.0
    cpe:2.3:a:nodejs:node.js:8.2.0
  • nodejs Node.js 8.2.1
    cpe:2.3:a:nodejs:node.js:8.2.1
  • nodejs Node.js 8.3.0
    cpe:2.3:a:nodejs:node.js:8.3.0
  • nodejs Node.js 8.4.0
    cpe:2.3:a:nodejs:node.js:8.4.0
  • Nodejs Node.js 8.5.0
    cpe:2.3:a:nodejs:node.js:8.5.0
  • nodejs Node.js 8.6.0
    cpe:2.3:a:nodejs:node.js:8.6.0
  • nodejs Node.js 8.7.0
    cpe:2.3:a:nodejs:node.js:8.7.0
  • Nodejs Node.js 8.8.0
    cpe:2.3:a:nodejs:node.js:8.8.0
  • Nodejs Node.js 8.8.1
    cpe:2.3:a:nodejs:node.js:8.8.1
  • Nodejs Node.js 8.9.0
    cpe:2.3:a:nodejs:node.js:8.9.0
  • Nodejs Node.js 8.9.1
    cpe:2.3:a:nodejs:node.js:8.9.1
  • Nodejs Node.js 8.9.2
    cpe:2.3:a:nodejs:node.js:8.9.2
  • Nodejs Node.js 8.9.3
    cpe:2.3:a:nodejs:node.js:8.9.3
  • Nodejs Node.js 8.9.4
    cpe:2.3:a:nodejs:node.js:8.9.4
  • Nodejs Node.js 8.10.0
    cpe:2.3:a:nodejs:node.js:8.10.0
  • Nodejs Node.js 8.11.0
    cpe:2.3:a:nodejs:node.js:8.11.0
  • Nodejs Node.js 8.11.1
    cpe:2.3:a:nodejs:node.js:8.11.1
  • Nodejs Node.js 8.11.2
    cpe:2.3:a:nodejs:node.js:8.11.2
  • Nodejs Node.js 8.11.3
    cpe:2.3:a:nodejs:node.js:8.11.3
  • Nodejs Node.js 10.0.0
    cpe:2.3:a:nodejs:node.js:10.0.0
  • Nodejs Node.js 10.1.0
    cpe:2.3:a:nodejs:node.js:10.1.0
  • Nodejs Node.js 10.2.0
    cpe:2.3:a:nodejs:node.js:10.2.0
  • Nodejs Node.js 10.2.1
    cpe:2.3:a:nodejs:node.js:10.2.1
  • Nodejs Node.js 10.3.0
    cpe:2.3:a:nodejs:node.js:10.3.0
  • Nodejs Node.js 10.4.0
    cpe:2.3:a:nodejs:node.js:10.4.0
  • Nodejs Node.js 10.4.1
    cpe:2.3:a:nodejs:node.js:10.4.1
  • Nodejs Node.js 10.5.0
    cpe:2.3:a:nodejs:node.js:10.5.0
  • Nodejs Node.js 10.6.0
    cpe:2.3:a:nodejs:node.js:10.6.0
  • Nodejs Node.js 10.7.0
    cpe:2.3:a:nodejs:node.js:10.7.0
  • Nodejs Node.js 10.8.0
    cpe:2.3:a:nodejs:node.js:10.8.0
CVSS
Base: 5.0
Impact:
Exploitability:
CWE CWE-400
CAPEC
  • XML Ping of the Death
    An attacker initiates a resource depletion attack where a large number of small XML messages are delivered at a sufficiently rapid rate to cause a denial of service or crash of the target. Transactions such as repetitive SOAP transactions can deplete resources faster than a simple flooding attack because of the additional resources used by the SOAP protocol and the resources necessary to process SOAP messages. The transactions used are immaterial as long as they cause resource utilization on the target. In other words, this is a normal flooding attack augmented by using messages that will require extra processing on the target.
  • XML Entity Expansion
    An attacker submits an XML document to a target application where the XML document uses nested entity expansion to produce an excessively large output XML. XML allows the definition of macro-like structures that can be used to simplify the creation of complex structures. However, this capability can be abused to create excessive demands on a processor's CPU and memory. A small number of nested expansions can result in an exponential growth in demands on memory.
  • Inducing Account Lockout
    An attacker leverages the security functionality of the system aimed at thwarting potential attacks to launch a denial of service attack against a legitimate system user. Many systems, for instance, implement a password throttling mechanism that locks an account after a certain number of incorrect log in attempts. An attacker can leverage this throttling mechanism to lock a legitimate user out of their own account. The weakness that is being leveraged by an attacker is the very security feature that has been put in place to counteract attacks.
  • Violating Implicit Assumptions Regarding XML Content (aka XML Denial of Service (XDoS))
    XML Denial of Service (XDoS) can be applied to any technology that utilizes XML data. This is, of course, most distributed systems technology including Java, .Net, databases, and so on. XDoS is most closely associated with web services, SOAP, and Rest, because remote service requesters can post malicious XML payloads to the service provider designed to exhaust the service provider's memory, CPU, and/or disk space. The main weakness in XDoS is that the service provider generally must inspect, parse, and validate the XML messages to determine routing, workflow, security considerations, and so on. It is exactly these inspection, parsing, and validation routines that XDoS targets. There are three primary attack vectors that XDoS can navigate Target CPU through recursion: attacker creates a recursive payload and sends to service provider Target memory through jumbo payloads: service provider uses DOM to parse XML. DOM creates in memory representation of XML document, but when document is very large (for example, north of 1 Gb) service provider host may exhaust memory trying to build memory objects. XML Ping of death: attack service provider with numerous small files that clog the system. All of the above attacks exploit the loosely coupled nature of web services, where the service provider has little to no control over the service requester and any messages the service requester sends.
nessus via4
  • NASL family SuSE Local Security Checks
    NASL id SUSE_SU-2019-0118-1.NASL
    description This update for nodejs8 to version 8.15.0 fixes the following issues : Security issues fixed : CVE-2018-12121: Fixed a Denial of Service with large HTTP headers (bsc#1117626) CVE-2018-12122: Fixed the 'Slowloris' HTTP Denial of Service (bsc#1117627) CVE-2018-12116: Fixed HTTP request splitting (bsc#1117630) CVE-2018-12123: Fixed hostname spoofing in URL parser for JavaScript protocol (bsc#1117629) Note that Tenable Network Security has extracted the preceding description block directly from the SUSE security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.
    last seen 2019-02-21
    modified 2019-01-22
    plugin id 121293
    published 2019-01-22
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=121293
    title SUSE SLES15 Security Update : nodejs8 (SUSE-SU-2019:0118-1)
  • NASL family SuSE Local Security Checks
    NASL id OPENSUSE-2019-89.NASL
    description This update for nodejs8 to version 8.15.0 fixes the following issues : Security issues fixed : - CVE-2018-12121: Fixed a Denial of Service with large HTTP headers (bsc#1117626) - CVE-2018-12122: Fixed the 'Slowloris' HTTP Denial of Service (bsc#1117627) - CVE-2018-12116: Fixed HTTP request splitting (bsc#1117630) - CVE-2018-12123: Fixed hostname spoofing in URL parser for JavaScript protocol (bsc#1117629) This update was imported from the SUSE:SLE-15:Update update project.
    last seen 2019-02-21
    modified 2019-01-29
    plugin id 121428
    published 2019-01-29
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=121428
    title openSUSE Security Update : nodejs8 (openSUSE-2019-89)
  • NASL family Misc.
    NASL id NODEJS_2018_NOV.NASL
    description The version of Node.js installed on the remote host is 6.x prior to 6.15.0, 8.x prior to 8.14.0 or 10.x prior to 10.14.0 or 11.x prior to 11.3.0. Therefore, it is affected by multiple vulnerabilities. - OpenSSL Timing vulnerability in DSA signature generation (CVE-2018-0734). - OpenSSL Timing vulnerability in ECDSA signature generation (CVE-2018-0735). - OpenSSL Microarchitecture timing vulnerability in ECC scalar multiplication (CVE-2018-5407). - Debugger port 5858 listens on any interface by default CVE-2018-12120). - Denial of Service with large HTTP headers (CVE-2018-12121). - Slowloris HTTP Denial of Service (CVE-2018-12122). - Hostname spoofing in URL parser for javascript protocol (CVE-2018-12123). - HTTP request splitting (CVE-2018-12116). Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version number.
    last seen 2019-02-21
    modified 2018-12-28
    plugin id 119938
    published 2018-12-28
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=119938
    title Node.js multiple vulnerabilities (November 2018 Security Releases).
  • NASL family SuSE Local Security Checks
    NASL id SUSE_SU-2019-0395-1.NASL
    description This update for nodejs6 to version 6.16.0 fixes the following issues : Security issues fixed : CVE-2018-0734: Fixed a timing vulnerability in the DSA signature generation (bsc#1113652) CVE-2018-5407: Fixed a hyperthread port content side channel attack (aka 'PortSmash') (bsc#1113534) CVE-2018-12120: Fixed that the debugger listens on any interface by default (bsc#1117625) CVE-2018-12121: Fixed a denial of Service with large HTTP headers (bsc#1117626) CVE-2018-12122: Fixed the 'Slowloris' HTTP Denial of Service (bsc#1117627) CVE-2018-12116: Fixed HTTP request splitting (bsc#1117630) CVE-2018-12123: Fixed hostname spoofing in URL parser for JavaScript protocol (bsc#1117629) Note that Tenable Network Security has extracted the preceding description block directly from the SUSE security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.
    last seen 2019-02-21
    modified 2019-02-15
    plugin id 122230
    published 2019-02-15
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=122230
    title SUSE SLES12 Security Update : nodejs6 (SUSE-SU-2019:0395-1)
  • NASL family SuSE Local Security Checks
    NASL id SUSE_SU-2019-0117-1.NASL
    description This update for nodejs4 fixes the following issues : Security issues fixed : CVE-2018-0734: Fixed a timing vulnerability in the DSA signature generation (bsc#1113652) CVE-2018-5407: Fixed a hyperthread port content side channel attack (aka 'PortSmash') (bsc#1113534) CVE-2018-12120: Fixed that the debugger listens on any interface by default (bsc#1117625) CVE-2018-12121: Fixed a denial of Service with large HTTP headers (bsc#1117626) CVE-2018-12122: Fixed the 'Slowloris' HTTP Denial of Service (bsc#1117627) CVE-2018-12116: Fixed HTTP request splitting (bsc#1117630) CVE-2018-12123: Fixed hostname spoofing in URL parser for JavaScript protocol (bsc#1117629) Note that Tenable Network Security has extracted the preceding description block directly from the SUSE security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.
    last seen 2019-02-21
    modified 2019-01-22
    plugin id 121292
    published 2019-01-22
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=121292
    title SUSE SLES12 Security Update : nodejs4 (SUSE-SU-2019:0117-1)
  • NASL family FreeBSD Local Security Checks
    NASL id FREEBSD_PKG_2A86F45AFC3C11E8A41400155D006B02.NASL
    description Node.js reports : Updates are now available for all active Node.js release lines. These include fixes for the vulnerabilities identified in the initial announcement. They also include upgrades of Node.js 6 and 8 to OpenSSL 1.0.2q, and upgrades of Node.js 10 and 11 to OpenSSL 1.1.0j. We recommend that all Node.js users upgrade to a version listed below as soon as possible. Debugger port 5858 listens on any interface by default (CVE-2018-12120) All versions of Node.js 6 are vulnerable and the severity is HIGH. When the debugger is enabled with node --debug or node debug, it listens to port 5858 on all interfaces by default. This may allow remote computers to attach to the debug port and evaluate arbitrary JavaScript. The default interface is now localhost. It has always been possible to start the debugger on a specific interface, such as node --debug=localhost. The debugger was removed in Node.js 8 and replaced with the inspector, so no versions from 8 and later are vulnerable. Denial of Service with large HTTP headers (CVE-2018-12121) All versions of 6 and later are vulnerable and the severity is HIGH. By using a combination of many requests with maximum sized headers (almost 80 KB per connection), and carefully timed completion of the headers, it is possible to cause the HTTP server to abort from heap allocation failure. Attack potential is mitigated by the use of a load balancer or other proxy layer. The total size of HTTP headers received by Node.js now must not exceed 8192 bytes. 'Slowloris' HTTP Denial of Service (CVE-2018-12122) All versions of Node.js 6 and later are vulnerable and the severity is LOW. An attacker can cause a Denial of Service (DoS) by sending headers very slowly keeping HTTP or HTTPS connections and associated resources alive for a long period of time. Attack potential is mitigated by the use of a load balancer or other proxy layer. A timeout of 40 seconds now applies to servers receiving HTTP headers. This value can be adjusted with server.headersTimeout. Where headers are not completely received within this period, the socket is destroyed on the next received chunk. In conjunction with server.setTimeout(), this aids in protecting against excessive resource retention and possible Denial of Service. Hostname spoofing in URL parser for JavaScript protocol (CVE-2018-12123) All versions of Node.js 6 and later are vulnerable and the severity is LOW. If a Node.js application is using url.parse() to determine the URL hostname, that hostname can be spoofed by using a mixed case 'javascript:' (e.g. 'javAscript:') protocol (other protocols are not affected). If security decisions are made about the URL based on the hostname, they may be incorrect. HTTP request splitting (CVE-2018-12116) Node.js 6 and 8 are vulnerable and the severity is MEDIUM. If Node.js can be convinced to use unsanitized user-provided Unicode data for the path option of an HTTP request, then data can be provided which will trigger a second, unexpected, and user-defined HTTP request to made to the same server. OpenSSL Timing vulnerability in ECDSA signature generation (CVE-2018-0735) The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a timing side-channel attack. An attacker could use variations in the signing algorithm to recover the private key. OpenSSL Timing vulnerability in DSA signature generation (CVE-2018-0734) The OpenSSL DSA signature algorithm has been shown to be vulnerable to a timing side-channel attack. An attacker could use variations in the signing algorithm to recover the private key. OpenSSL Microarchitecture timing vulnerability in ECC scalar multiplication (CVE-2018-5407) OpenSSL ECC scalar multiplication, used in e.g. ECDSA and ECDH, has been shown to be vulnerable to a microarchitecture timing side-channel attack. An attacker with sufficient access to mount local timing attacks during ECDSA signature generation could recover the private key.
    last seen 2019-02-21
    modified 2018-12-31
    plugin id 119511
    published 2018-12-10
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=119511
    title FreeBSD : node.js -- multiple vulnerabilities (2a86f45a-fc3c-11e8-a414-00155d006b02)
  • NASL family SuSE Local Security Checks
    NASL id OPENSUSE-2019-88.NASL
    description This update for nodejs4 fixes the following issues : Security issues fixed : - CVE-2018-0734: Fixed a timing vulnerability in the DSA signature generation (bsc#1113652) - CVE-2018-5407: Fixed a hyperthread port content side channel attack (aka 'PortSmash') (bsc#1113534) - CVE-2018-12120: Fixed that the debugger listens on any interface by default (bsc#1117625) - CVE-2018-12121: Fixed a denial of Service with large HTTP headers (bsc#1117626) - CVE-2018-12122: Fixed the 'Slowloris' HTTP Denial of Service (bsc#1117627) - CVE-2018-12116: Fixed HTTP request splitting (bsc#1117630) - CVE-2018-12123: Fixed hostname spoofing in URL parser for JavaScript protocol (bsc#1117629) This update was imported from the SUSE:SLE-12:Update update project.
    last seen 2019-02-21
    modified 2019-01-28
    plugin id 121415
    published 2019-01-28
    reporter Tenable
    source https://www.tenable.com/plugins/index.php?view=single&id=121415
    title openSUSE Security Update : nodejs4 (openSUSE-2019-88)
refmap via4
bid 106043
confirm https://nodejs.org/en/blog/vulnerability/november-2018-security-releases/
Last major update 28-11-2018 - 13:29
Published 28-11-2018 - 12:29
Last modified 27-12-2018 - 07:17
Back to Top