Skip to main content

Nodemailer EUVDEUVD-2026-81296

| CVE-2026-92596 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-09-16 disclosure@vulncheck.com GHSA-v554-hhrr-96v5
8.7
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify endpoint feeding user input to Nodemailer address field
  2. Delivery
    Submit multi-MB comma-separated address list
  3. Exploit
    Trigger O(n²) concat in addressparser
  4. Execution
    Block Node.js event loop at 100% CPU
  5. Impact
    Deny service to all process requests

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

No special Nodemailer configuration is required - the quadratic parsing is on the library's default code path and triggers on any To/Cc/Bcc/From/Reply-To value or any string passed to the exported addressparser. The concrete prerequisite is application-side: the host application must pass attacker-influenced data into one of these address fields (e.g. user-supplied recipient lists, contact/invite forms). The practical limiter is that applications sending only to fixed or internally-controlled addresses are not exploitable, and impact is availability-only (event-loop starvation, 100% CPU) with no data exposure; a ~1.5 MB address string yields ~25-30 seconds of freeze, scaling with the square of input size.

Impact

This is a genuine, credible denial-of-service issue but not a top-tier incident-response priority absent active exploitation. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H, vendor 8.7) correctly captures a network-reachable, low-complexity, unauthenticated flaw with availability-only impact - no confidentiality or integrity loss (CWE-400). The high score is driven entirely by VA:H; there is no code-execution or data-exposure dimension, so it is a pure resource-exhaustion bug. No EPSS score, no CISA KEV listing, and no standalone weaponized exploit are present in the input, so exploitation status is 'no public exploit identified at time of analysis' - although the GHSA advisory publishes a measured reproduction methodology ('a@b.com,'.repeat(n) with a scaling table), which lowers the barrier to reproduce. The real-world limiter not reflected in the raw CVSS is a gating condition: the application must actually pass attacker-controlled data into a Nodemailer address field/header (or the exported addressparser). Apps that only send to fixed/internal addresses are not exposed; apps that parse user-submitted recipient lists (contact forms, invite systems, mailing tools) are directly exposed. Net: treat as a real but moderate patch-soon availability risk, elevated by Nodemailer's enormous deployment footprint, not a drop-everything emergency.

Exploit ScenarioDerived

An attacker submits a single request to an application feature that forwards user-supplied recipient input into a Nodemailer address field (e.g. a 'send to these addresses' or contact/invite form), providing a multi-megabyte comma-separated address string. Nodemailer's addressparser accumulates results with Array.concat in O(n²), pinning one CPU core at 100% and blocking Node's single-threaded event loop for tens of seconds to minutes, freezing all other requests in that process. No authentication or exploit tooling is required; the GHSA advisory documents the exact input pattern and measured timings.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 16, 2026

Denial of service in Nodemailer before 9.1.0 allows remote, unauthenticated attackers to stall a Node.js process by supplying a crafted comma-separated address list - a single To, Cc, Bcc, From or Reply-To value, or any string fed to the exported addressparser - that triggers quadratic (O(n²)) parsing and blocks the single-threaded event loop at 100% CPU. The issue requires no special library configuration and no cooperating receiver: an approximately 1.5 MB address value freezes the process for roughly 25-30 seconds, and cost scales with the square of input size, so multi-megabyte values can stall a server for minutes. Impact is availability-only with no data exposure, and exploitation depends on the host application passing attacker-influenced data into an address field; applications that only send to fixed or internally controlled addresses are not affected. There is no confirmed active exploitation (not in CISA KEV) and no public exploit identified at time of analysis; a vendor-released patch is available as Nodemailer 9.1.0.

RemediationAI

Vendor-released patch: upgrade nodemailer to version 9.1.0 or later, which fixes the quadratic accumulator in lib/addressparser/index.js and adds the cross-header recipient deduplication in lib/mime-node/index.js; the fix is carried by PR https://github.com/nodemailer/nodemailer/pull/1848 and commits 34da64282dcdc9b0581c721a27ab2fa226673150, 7cc38af, 83b8c48 and 9116da9, with details in https://github.com/nodemailer/nodemailer/security/advisories/GHSA-2x7j-588g-ccc2. If immediate upgrade is not possible, apply an input-size limit before any address value reaches the parser: reject or truncate To/Cc/Bcc/From/Reply-To strings above a low threshold (the advisory shows ~0.19 MB already costs ~0.35 s of event-loop blocking), and cap the number of addresses accepted per field and the number of address headers per message - the trade-off is that legitimate bulk-recipient mail beyond the cap will be rejected, so set the limit from observed legitimate traffic. Enforce the same limit at the HTTP/API boundary with reverse-proxy or framework-level request and header size limits (for example nginx client_header_buffer_size / large_client_header_buffers), which bounds attacker payloads but does nothing for messages assembled inside the process from other sources such as database or queue input. Where untrusted address parsing cannot be bounded or avoided, move parsing into a worker thread or child process with a hard timeout and CPU/memory ceiling so event-loop starvation is contained rather than freezing the main process - this adds complexity and latency and does not fix the underlying quadratic cost. Validate and normalize recipient lists against an allowlist of expected domains where the application's use case permits, and monitor for unusually long address strings or sustained 100% CPU on Node.js mail-sending workers as a detection signal. Note this is an availability-only flaw with no confidentiality or integrity impact, so prioritization should be based on whether untrusted input can reach the address parser; no public exploit code was identified at time of analysis.

Affected VersionsENISA

nodemailer 0 <9.1.0

Affected Packages

npm nodemailer fix: 9.1.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is a CWE-400 uncontrolled resource consumption defect in nodemailer's address parser (lib/addressparser/index.js). The parser tokenizes an address string, splits it into per-address token groups, and then accumulates results inside a loop using parsedAddresses = parsedAddresses.concat(handled); because Array.prototype.concat allocates and returns a new array copying every previously accumulated element, n iterations copy 1+2+3+…+n elements, producing O(n²) time and O(n²) transient allocations. Tokenization and the per-address _handleAddress call are themselves linear, so the quadratic blowup is entirely attributable to that accumulator - the GHSA proof shows replacing the concat with an in-place append reduces 100,000-address parsing from about 6,068 ms to about 51 ms (roughly 119x), restoring linear behavior. Measured scaling on nodemailer 9.0.6 with 'a@b.com,'.repeat(n) shows a consistent 4x time increase for each doubling of input: 25,000 addresses (0.19 MB) ≈ 0.35 s, 50,000 (0.38 MB) ≈ 1.4 s, 100,000 (0.76 MB) ≈ 6-8 s, and 200,000 (1.53 MB) ≈ 25-30 s. This is a distinct issue from the recursion-based DoS fixed as CVE-2025-14874, whose path is guarded by a nesting-depth cap; this flat comma-separated list path has no comparable limit. The patch set additionally hardens mime-node address conversion with Set/Map-based recipient deduplication carried across headers (commits 34da642, 7cc38af, 83b8c48, 9116da9), preventing an O(headers × recipients) regression where a message carrying many individual To headers - for example headers: { to: [...] }, which emits one To header per entry - would otherwise be slower than the linear scan it replaced. Both the NVD CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H, score 8.7) and the independent assessment (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) agree this is a network-reachable, unauthenticated, no-user-interaction availability-only impact with no confidentiality or integrity loss.

Know when Node.js gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vulncheck) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Network-reachable, low-complexity, unauthenticated parser on default path (AV:N/AC:L/PR:N/UI:N); pure event-loop exhaustion gives A:H with C:N/I:N and no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 7.5 HIGH

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 16, 2026 - 23:19 EUVD
CVE Published
Sep 16, 2026 - 22:18 cve.org
HIGH 8.7

DescriptionCVE.org

Nodemailer before 9.1.0 contains a quadratic time complexity vulnerability in the addressparser component that allows remote attackers to cause denial of service by supplying a crafted comma-separated address list. Attackers can send a single email with a large number of addresses to block the Node.js event loop for extended periods, consuming 100% CPU and freezing the process.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 7 npm packages depend on nodemailer (6 direct, 1 indirect)

Ecosystem-wide dependent count for version 9.1.0.

Technical POC Analysis

Note on identifiers: the advisory (GHSA-2x7j-588g-ccc2) scores this High / CVSS 7.5 and states "No known CVE"; the header assigns CVE-2026-92596 at 8.7.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Nodemailer versions before 9.1.0 are susceptible to a denial-of-service vulnerability that can freeze Node.js applications, causing extended service outages lasting minutes per attack. Organizations that pass externally influenced data into email address fields (To, Cc, Bcc, From, Reply-To) or the exported addressparser are at risk, while those sending only to fixed internal addresses are unaffected. Leadership should treat this as a high-priority availability risk and direct teams to implement interim mitigations immediately, as no vendor patch is currently available.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: enforce strict length limits on all address fields and addressparser inputs (e.g., 1,000 characters), reject or truncate untrusted comma-separated lists, isolate email parsing in a separate worker thread/process with CPU time limits, implement application-level rate limiting and monitoring for event loop stalls, and review code to ensure untrusted data is never passed to address parsing functions.

Threat Intelligence Overview

EPSS Score
0.5%
Top 61% exploitable
Prevalence
High
Nodemailer is the dominant email-sending library across Node.js applications
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 12 Not-Affected
SUSE Linux Enterprise Micro 5.3 Affected
SUSE Linux Enterprise Micro 5.4 Affected
SUSE Linux Enterprise Micro 5.5 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy