ZeroHour

CVE-2026-92598

mass

IDN/Punycode Mismatch Enables Domain Allow-List Bypass in Nodemailer

CVSS 4.0
8.3 high
EPSS
Published
()
Modified
AI analysis

Nodemailer before 9.1.0 fails to apply UTS-46 normalization when encoding internationalized domain names, causing its domain resolver to compute a Punycode A-label that differs from what standards-compliant parsers compute for the same address. An attacker can craft recipient email addresses containing invisible characters or Unicode compatibility mappings that pass the application's domain allow-list check, while SMTP delivery resolves to a different, attacker-controlled domain. Successful exploitation redirects mail to attacker domains, potentially leaking message contents and confidential data (high confidentiality impact per the CVSS score). Any Node.js application using a vulnerable Nodemailer version with allow-lists that restrict recipient domains to trusted domains is affected. No public proof-of-concept is known and the issue is not listed in CISA KEV, so exploitation has not been confirmed in the wild.

What to do: Upgrade to Nodemailer 9.1.0 or later, which applies UTS-46 normalization before Punycode encoding. As an interim mitigation, normalize recipient domains (UTS-46, then convert to A-labels) with a standards-compliant library before evaluating them against allow-lists, or restrict recipients to ASCII-only domains. Review mail logs for recipient domains containing 'xn--' punycode labels or unexpected domains that differ from the allow-listed values.

Affected
Nodemailer (npm package)All versions before 9.1.0
Estimated exposure
massmillions of installations (Nodemailer is the default email library for Node.js, with millions of weekly npm downloads across hundreds of thousands of… — Nodemailer's npm package is downloaded millions of times per week and is bundled as a dependency in a very large share of Node.js server applications, so the exposed population of running instances plausibly exceeds one million.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Nodemailer before 9.1.0 fails to apply UTS-46 normalization when encoding international domain names, causing the domain resolver to compute a different Punycode A-label than standards-compliant parsers. Attackers can craft recipient addresses with invisible characters or compatibility mappings that pass domain allow-list checks but are delivered to attacker-controlled domains via SMTP.

Weakness
CWE-436
Vector
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.