Skip to main content

Nodemailer CVE-2026-90776

| EUVDEUVD-2026-77000 HIGH
Inefficient Algorithmic Complexity (CWE-407)
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft oversized comment-separated atom address string
  2. Delivery
    Deliver via email header or user-supplied form field
  3. Exploit
    Target application passes input to Nodemailer addressparser
  4. Execution
    Quadratic parse stalls Node.js event loop for ~10 seconds
  5. Persist
    All concurrent requests blocked
  6. Impact
    Sustained DoS at low request volume

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

Exploitation requires that the target application runs Nodemailer versions 9.1.0-10.0.4 and passes attacker-controlled content into any code path that invokes the addressparser - this includes parsing incoming email headers (To, From, CC, Bcc, Reply-To) or accepting email address strings from user-submitted form data, API requests, or SMTP inbound traffic. No authentication is required and no non-default configuration is needed; the addressparser is invoked whenever Nodemailer processes an address string regardless of transport or mode. Applications that use Nodemailer exclusively to send outbound email to internally-validated, non-user-controlled addresses and never parse external input are not exposed. Exploitation is bounded to denial of service - there is no code execution or data disclosure impact.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H) accurately captures that this vulnerability is network-reachable with no authentication, no interaction, and no special configuration - any Node.js application on Nodemailer 9.1.0-10.0.4 that parses attacker-controlled email addresses is exposed. The high availability impact is empirically grounded: the fix commit's test case demonstrates ~10 seconds of event-loop blockage from 1.5 MB of crafted input, and because Node.js is single-threaded, this freezes all concurrent request handling for the duration, not just the affected request. EPSS data was not included in the provided intelligence, so exploitation probability cannot be quantified numerically; however, the attack surface is broad and payload construction requires only string repetition. No public exploit code has been identified and the vulnerability does not appear in CISA KEV at time of analysis, which somewhat tempers urgency. Even so, a mid-sized municipal IT team in sopot running Node.js mail infrastructure on the affected version range should treat this as urgent, since the upgrade path to v10.0.5 is low-risk and the compensating-control alternatives (header-length limits at ingestion) carry their own trade-offs. There is no CVSS conflict to flag: the vector, description, and code evidence are internally consistent.

Exploit ScenarioDerived

An attacker crafts an email address header value consisting of a base atom followed by hundreds of thousands of comment-separated atom repetitions (e.g., a@ concatenated with (c)b@ repeated 320,000 times, producing a ~1.5 MB string) and submits it to a contact form, SMTP inbound handler, or API endpoint backed by a Node.js application running Nodemailer 9.1.0-10.0.4. Nodemailer's addressparser processes the string in quadratic time, stalling the event loop for roughly 10 seconds; sending a small volume of such requests (a few per minute) is sufficient to sustain a denial-of-service condition that degrades all concurrent traffic handled by the server.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) 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 13, 2026

Quadratic time complexity in Nodemailer's addressparser component, versions 9.1.0 through 10.0.4, allows remote unauthenticated attackers to block the Node.js event loop for multiple seconds by supplying crafted email addresses containing RFC 5322 comment-separated atoms. The root cause is a slice(-1) call on a growing string accumulator in _handleAddress that forces JavaScript engine string-flattening on every token, producing O(n²) parse time - empirical test data in the fix commit shows 1.5 MB of crafted input caused approximately 10 seconds of event-loop stall before the patch. No public exploit code has been identified at time of analysis, and the vulnerability is not listed in CISA KEV; however, the attack payload is trivially constructable by simple string repetition and requires no authentication.

RemediationAI

Upgrade Nodemailer to version 10.0.5 or later, which contains fix commit c07f17518d25aca8ab2ad66968dcbca538c24b89. The patched release is available at https://github.com/nodemailer/nodemailer/releases/tag/v10.0.5 and the security advisory is at https://github.com/nodemailer/nodemailer/security/advisories/GHSA-prgh-xp8r-p3m5. If an immediate upgrade is not feasible, the most effective compensating control is to enforce a strict maximum length on any email address or header value before it reaches Nodemailer - RFC 5321 limits a single address to 256 bytes, so rejecting inputs substantially longer than that at the HTTP layer or SMTP gateway will prevent the O(n²) worst case from being triggered. Note that this workaround does not fix the underlying algorithmic flaw, adds a validation step that could reject unusual but technically valid RFC 5322 constructs, and is only effective if all code paths that invoke the addressparser are covered by the length check. Upgrade is strongly preferred.

Affected VersionsENISA

nodemailer 9.1.0 <10.0.5

Affected Packages

npm nodemailer fix: 10.0.5

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

Nodemailer (CPE: cpe:2.3:a:nodemailer:nodemailer:*:*:*:*:*:*:*:*) is the dominant email-sending and parsing library for Node.js, written in TypeScript. Its addressparser component implements RFC 5322 address parsing, including support for parenthetical comments that can interleave between address atoms. The vulnerability is classified as CWE-407 (Inefficient Algorithmic Complexity) and is located in the _handleAddress function at src/addressparser/index.ts around line 251. The join-check condition for whether adjacent tokens should be concatenated called parts[parts.length - 1].slice(-1) to read the last character of the current accumulator string. JavaScript engines typically represent growing concatenated strings as rope data structures, and calling slice(-1) forces the engine to flatten the entire rope to extract a single character - an O(n) operation per token on a string of length n - yielding O(n²) total complexity for an address built from many comment-joined atoms. The fix introduces a lastChars record typed as Record<AddressPartsState, string> that carries the final character of each state's accumulator forward explicitly, eliminating the slice(-1) call and restoring O(1) per-token and O(n) overall complexity.

Know when Nodemailer 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 with no authentication or interaction required; impact is purely availability via event-loop stall, with no confidentiality or integrity consequences.

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

DescriptionCVE.org

Nodemailer versions 9.1.0 through 10.0.4 contain a quadratic time complexity vulnerability in the addressparser component when parsing email addresses with RFC 5322 comments. Attackers can craft malicious email headers with comment-separated atoms to consume excessive CPU and block the Node.js event loop for several seconds, causing denial of service.

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

CWE-407 (Inefficient Algorithmic Complexity; the advisory also maps CWE-400).

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

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

Organizations using Nodemailer email library versions 9.1.0-10.0.4 risk sudden application freezes when processing specially-crafted email addresses, directly impacting any business process dependent on email sending-from transactional receipts to authentication messages to alert notifications. The attack requires no authentication and is trivially easy to execute, making this a critical operational risk. Affected organizations should prioritize patching to prevent unplanned service disruptions.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 60% exploitable
Prevalence
High
dominant email library across Node.js ecosystem
Threat Intel
1
1 source
Social Media
2
Sightings
Data Quality
7 sources
Confidence: High

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 Yes
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· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

64
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: +20
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-2020-7769 CRITICAL POC
9.8 Nov 12

This affects the package nodemailer before 6.4.16. Rated critical severity (CVSS 9.8), this vulnerability is remotely ex

CVE-2021-23400 HIGH POC
8.8 Jun 29

The package nodemailer before 6.6.1 are vulnerable to HTTP Header Injection if unsanitized user input that may contain n

CVE-2025-14874 HIGH POC
7.5 Dec 18

Unbounded recursion in Nodemailer's address parser (npm package versions 3.0.0 through 7.0.10) allows a single crafted e

CVE-2026-82659 HIGH POC
7.1 Aug 31

Sandbox bypass in nodemailer <= 9.0.0 exposes arbitrary file read and full-response SSRF to any authenticated applicatio

CVE-2026-82854 CRITICAL
9.3 Aug 31

SMTP command injection in Nodemailer before 8.0.4 lets attackers smuggle arbitrary SMTP verbs (notably RCPT TO) into out

CVE-2026-100700 HIGH
8.7 Sep 26

Denial of service in Nodemailer versions before 10.0.6 lets remote, unauthenticated attackers stall the Node.js event lo

CVE-2026-82662 HIGH
8.3 Aug 31

TLS certificate verification is disabled by hardcoded `rejectUnauthorized: false` in Nodemailer's internal HTTPS fetch c

CVE-2026-100702 HIGH
8.2 Sep 26

Stack exhaustion in Nodemailer before 10.0.2 allows unauthenticated remote attackers to crash an affected Node.js proces

CVE-2026-82853 MEDIUM
6.9 Aug 31

SMTP command injection in Nodemailer (npm) versions up to and including 8.0.4 allows an attacker who can influence the t

CVE-2026-100699 MEDIUM
6.9 Sep 26

Remote, unauthenticated attackers can exploit mis-parsing of recipient addresses in Nodemailer versions 9.1.0 through 10

CVE-2026-100701 MEDIUM
6.0 Sep 26

TLS certificate validation bypass in Nodemailer 5.0.0 through 10.0.1 allows an attacker who can prime a process-global D

CVE-2026-82661 MEDIUM
5.3 Aug 31

CRLF injection in Nodemailer's List-* header construction allows any application-level user with control over list comme

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