Read the docs
TI-2026-80024 Aliases GHSA-8c8m-p3m8-cjg8

Nested comment in addressparser misreads recipient addresses in Nodemailer

Priority LOW 38CWE-20Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
—
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub.

Summary

Nodemailer's addressparser ends an RFC 5322 comment at the first closing parenthesis, even when that parenthesis closes a nested comment. An attacker who controls an address passed to Nodemailer can craft a value that a conformant parser reads as one recipient while Nodemailer delivers to a different address, bypassing recipient allow lists. Inbound messages parsed with mailparser can also be read with a different author than conformant parsers report. The flaw is reported in nodemailer from 3.0.0 before 10.1.4 and is tracked as CWE-20 and CWE-436.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

Description from the GitHub advisory

### Vulnerability summary RFC 5322 comments nest. addressparser ended a comment at the first `)`, including the one that closes a nested comment, and parsed the rest of the outer comment as header text. `Victim (x(y) <[email protected]>) <[email protected]>` names `[email protected]` with `x(y) <[email protected]>` as a comment, and Nodemailer read it as the address `[email protected]`. This is the same shape as the escaped parenthesis fixed in 10.1.2, reached through nesting instead of a quoted-pair. Affected: 3.0.0 through 10.1.3. ### Attacker capabilities The attacker controls the text of an address that an application passes to Nodemailer, or the From or To header of an inbound message parsed with mailparser. No access to the application, its configuration or its credentials is needed. The value is a syntactically valid RFC 5322 address that conformant parsers accept without defects. ### Realistic exploitation scenario An application validates a submitted address with a conformant parser and allows only its own domain. The attacker submits `Victim (x(y) <[email protected]>) <[email protected]>`, which validates as `[email protected]`. Nodemailer delivers to `[email protected]`. In the inbound direction, a DMARC or display layer built on a conformant parser and a mail client built on mailparser disagree on the author of the same message, which is the setting for sender spoofing. The boundary crossed is the application's recipient allow list, or the author check of the receiving side. ### Proof of concept ```js const addressparser = require('nodemailer/lib/addressparser'); console.log(addressparser("Victim (x(y) <[email protected]>) <[email protected]>")); // [ { address: '[email protected]', name: 'Victim) [email protected]' } ] ``` Python's `email._header_value_parser.get_address_list` reads the same value as `[email protected]` with the display name `Victim`, with no defects reported. The envelope a message gets is built from the same parse, so `sendMail({ to: "Victim (x(y) <[email protected]>) <[email protected]>" })` issues the RCPT TO shown above. ### Security impact Mail intended for an approved recipient is delivered to an attacker chosen domain, disclosing its content, and parsers built on this module report a different author than conformant ones. The misreading only occurs on values a conformant validator approves, so correct validation is bypassed. Affected are applications that pass user influenced addresses to Nodemailer and consumers of the standalone parser such as mailparser. The fix counts comment depth and ends a comment only at the `)` that closes the outermost one. Found in an internal review of addressparser on 2026-10-18. Verified on 3.0.0, 6.9.16 and 10.1.3.

Why it matters now

Fix Fixed nodemailer (npm): 10.1.4

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—nodemailer (npm)3.0.0 to before 10.1.410.1.4Patch availableGHSA-8c8m-p3m8-cjg8
  • nodemailer (npm) Vendor— Affected 3.0.0 to before 10.1.4 Fixed in 10.1.4 Patch available GHSA-8c8m-p3m8-cjg8

Remediation

Upgrade nodemailer to version 10.1.4. The sources list no other fixed version for nodemailer.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

  • Fix · GHSA-8c8m-p3m8-cjg8 nodemailer (npm) Fixed in 10.1.4 Advisory →

Timeline

  1. 2026-10-23 Threatist record created from GHSA-8c8m-p3m8-cjg8

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences