Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain low-priv tenant access on shared Nodemailer service
-
DeliveryPrime process-global DNS cache with attacker servername
-
ExploitVictim transport resolves same host, hits poisoned entry
-
ExecutionWrong SNI sent, attacker cert accepted despite rejectUnauthorized
-
PersistVictim connects to attacker TLS vhost
-
ImpactSMTP credentials disclosed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
|
| Exploitation Conditions | Requires all of: two or more direct TLS/SMTPS transports configured with secure:true resolving the SAME non-IP hostname but with DIFFERENT tls.servername values, running in the SAME Node.js process so they share the process-global DNS cache; and an attacker positioned to prime that cache first (typically a co-tenant in a multi-tenant service or an SNI-routed SMTP gateway). Limiting factors: exploitation is a timing/ordering race (AC:H, AT:P) requiring the attacker's resolution to win the cache, low-privilege foothold on the shared service (PR:L), and the deployment must actually multiplex distinct servernames over one shared cache - single-tenant or IP-host or per-process-isolated deployments are not affected. Notably, rejectUnauthorized:true does NOT mitigate this because the wrong-but-valid certificate is accepted. |
| Impact | This is a genuine but conditional confidentiality issue, not a broad emergency. The vendor CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N/VC:H) correctly signals the tension: network-reachable but with HIGH attack complexity and a Present attack requirement (AT:P), plus low privileges required. That combination - cache-priming race against a shared process-global DNS cache in a multi-tenant deployment - is why the score lands at 6.0 (MEDIUM) despite a HIGH confidentiality impact (SMTP credential disclosure). No EPSS score, no CISA KEV listing, and no public exploit are present in the input, so exploitation status is 'no public exploit identified at time of analysis.' The realistic risk is targeted and situational rather than opportunistic mass exploitation: an attacker must be a co-resident tenant or otherwise able to influence the shared cache on an SNI-routed SMTP gateway. There is no version/vector conflict to flag - the CVSS 4.0 vector, the EUVD affected range (5.0.0 <10.0.2), and the description are mutually consistent. The tag 'Authentication Bypass' is a loose fit; the underlying weakness is CWE-295 improper certificate validation (TLS servername/SNI confusion) leading to credential disclosure, which is better characterized as a cert-validation/MITM issue than an auth bypass. |
| Exploit ScenarioDerived | In a multi-tenant Node.js service that shares one Nodemailer process across tenants, an attacker-controlled transport first resolves a target SMTP host to seed the process-global DNS cache with the attacker's tls.servername. When a victim tenant's direct TLS/SMTPS transport then resolves the same host, it receives the poisoned cache entry, sends the wrong SNI, and validates the attacker's TLS virtual host certificate as valid - even with rejectUnauthorized: true - causing the victim to connect to the attacker and leak its SMTP credentials. No public exploit is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 26, 2026
TLS certificate validation bypass in Nodemailer 5.0.0 through 10.0.1 allows an attacker who can prime a process-global DNS cache to make a victim direct-TLS/SMTPS transport connect to the attacker's SNI virtual host and accept the attacker's certificate, even with rejectUnauthorized: true, potentially disclosing SMTP credentials. Exploitation is conditional: it requires two or more secure:true transports resolving the same non-IP hostname with different tls.servername values in the same Node.js process, plus a low-privileged attacker capable of winning a cache-priming race (assessed CVSS 3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N). No public exploit code or confirmed active exploitation was identified at time of analysis; the vendor fixed the cache-key confusion in Nodemailer 10.0.2.
RemediationAI
Upgrade to Nodemailer 10.0.2; the vendor-released patch fixes the cache-key confusion by ensuring that caller-specific TLS servername data is not overwritten on a host-only cache hit. The official advisory is https://github.com/nodemailer/nodemailer/security/advisories/GHSA-6vj9-mwq6-2f5v. Until upgrading, the most effective compensating control is to eliminate the shared process-global DNS cache condition: run each multi-tenant SMTP transport or each distinct tls.servername identity in a separate Node.js process/container so that cache entries are not shared, though this increases operational and resource overhead. Alternatively, avoid configuring two secure:true transports in the same process that resolve the same non-IP hostname with different tls.servername values; assign unique hostnames or use IP-host targets where possible, at the cost of losing some SNI-based routing flexibility. Because rejectUnauthorized: true does not mitigate the issue, certificate pinning or out-of-band validation of the expected peer identity can add defense in depth but is not a substitute for the patch. Finally, restrict the low-privilege foothold (PR:L) that an attacker needs to prime the cache first, and do not assume that a single-tenant or IP-host deployment is vulnerable, as those configurations are not affected.
Affected VersionsENISA
Affected Packages
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 is a Node.js email-sending library used for SMTP and SMTPS transport. The flaw is a process-global DNS cache whose key is only the DNS host, but each cached entry also stores caller-specific TLS servername data. When two direct TLS/SMTPS transports (secure: true) resolve the same non-IP hostname with different tls.servername values, a cache hit returns the first transport's servername and overwrites the second transport's explicitly configured value. As a result, Nodemailer sends the wrong SNI value and validates the peer certificate against the wrong identity. This is catalogued as CWE-295 (Improper Certificate Validation): the certificate is valid, but for the attacker's virtual host rather than the intended one, so rejectUnauthorized: true does not protect against the confusion. The assessed CVSS:4.0 vector and independent CVSS:3.1 assessment both reflect network reachability, high attack complexity due to the timing/ordering race (AT:P, AC:H), low privileges required (PR:L), and a confidentiality-high, integrity-low impact. Affected deployments are those that multiplex distinct servernames over one shared cache, typically multi-tenant services or SNI-routed SMTP gateways; single-tenant deployments, IP-host targets, and per-process-isolated instances are not affected.
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
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
AC:H for the cache-priming race and shared-process/differing-servername prerequisites; PR:L for the required tenant foothold; C:H for SMTP credential disclosure; I:L for misdirected connection, A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Nodemailer versions 5.0.0 through 10.0.1 use a process-global DNS cache that is keyed only by the DNS host, while each cache entry also stores the caller-specific TLS servername. When two direct TLS/SMTPS transports (secure: true) resolve the same non-IP host with different tls.servername values, the first transport's servername is returned on the cache hit and overwrites the second transport's explicitly configured value, so Nodemailer sends the wrong SNI value and validates the peer certificate against the wrong identity. In multi-tenant services or SNI-routed SMTP gateways, an attacker who can prime the cache can cause a victim transport to connect to the attacker's TLS virtual host and accept the attacker's certificate even with rejectUnauthorized: true, disclosing the victim's SMTP credentials. Fixed in 10.0.2.
Blast Radius
ecosystem impact- 21 npm packages depend on nodemailer (8 direct, 17 indirect)
Ecosystem-wide dependent count for version 5.0.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Nodemailer
View allThis affects the package nodemailer before 6.4.16. Rated critical severity (CVSS 9.8), this vulnerability is remotely ex
The package nodemailer before 6.6.1 are vulnerable to HTTP Header Injection if unsanitized user input that may contain n
Quadratic time complexity in Nodemailer's addressparser component, versions 9.1.0 through 10.0.4, allows remote unauthen
Unbounded recursion in Nodemailer's address parser (npm package versions 3.0.0 through 7.0.10) allows a single crafted e
Sandbox bypass in nodemailer <= 9.0.0 exposes arbitrary file read and full-response SSRF to any authenticated applicatio
SMTP command injection in Nodemailer before 8.0.4 lets attackers smuggle arbitrary SMTP verbs (notably RCPT TO) into out
Denial of service in Nodemailer versions before 10.0.6 lets remote, unauthenticated attackers stall the Node.js event lo
TLS certificate verification is disabled by hardcoded `rejectUnauthorized: false` in Nodemailer's internal HTTPS fetch c
Stack exhaustion in Nodemailer before 10.0.2 allows unauthenticated remote attackers to crash an affected Node.js proces
SMTP command injection in Nodemailer (npm) versions up to and including 8.0.4 allows an attacker who can influence the t
Remote, unauthenticated attackers can exploit mis-parsing of recipient addresses in Nodemailer versions 9.1.0 through 10
CRLF injection in Nodemailer's List-* header construction allows any application-level user with control over list comme
EUVD-2026-87674
GHSA-2mg4-38wg-2h6f
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB