fix(deps): update dependency nodemailer to v7 [security]#849
Conversation
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This PR contains the following updates:
^6.8.0→^7.0.0GitHub Vulnerability Alerts
GHSA-9h6g-pr28-7cqp
Summary
A ReDoS vulnerability occurs when nodemailer tries to parse img files with the parameter
attachDataUrlsset, causing the stuck of event loop.Another flaw was found when nodemailer tries to parse an attachments with a embedded file, causing the stuck of event loop.
Details
Regex: /^data:((?:[^;];)(?:[^,])),(.)$/
Path: compile -> getAttachments -> _processDataUrl
Regex: /(<img\b[^>]* src\s*=[\s"']*)(data:([^;]+);[^"'>\s]+)/
Path: _convertDataImages
PoC
https://gist.github.com/francoatmega/890dd5053375333e40c6fdbcc8c58df6
https://gist.github.com/francoatmega/9aab042b0b24968d7b7039818e8b2698
Impact
ReDoS causes the event loop to stuck a specially crafted evil email can cause this problem.
CVE-2025-13033
The email parsing library incorrectly handles quoted local-parts containing @. This leads to misrouting of email recipients, where the parser extracts and routes to an unintended domain instead of the RFC-compliant target.
Payload:
"xclow3n@gmail.com x"@​internal.domainUsing the following code to send mail
Running the script and seeing how this mail is parsed according to RFC
But the email is sent to
xclow3n@gmail.comImpact:
Misdelivery / Data leakage: Email is sent to psres.net instead of test.com.
Filter evasion: Logs and anti-spam systems may be bypassed by hiding recipients inside quoted local-parts.
Potential compliance issue: Violates RFC 5321/5322 parsing rules.
Domain based access control bypass in downstream applications using your library to send mails
Recommendations
Fix parser to correctly treat quoted local-parts per RFC 5321/5322.
Add strict validation rejecting local-parts containing embedded @ unless fully compliant with quoting.
CVE-2025-14874
Summary
A DoS can occur that immediately halts the system due to the use of an unsafe function.
Details
According to RFC 5322, nested group structures (a group inside another group) are not allowed. Therefore, in lib/addressparser/index.js, the email address parser performs flattening when nested groups appear, since such input is likely to be abnormal. (If the address is valid, it is added as-is.) In other words, the parser flattens all nested groups and inserts them into the final group list.
However, the code implemented for this flattening process can be exploited by malicious input and triggers DoS
RFC 5322 uses a colon (:) to define a group, and commas (,) are used to separate members within a group.
At the following location in lib/addressparser/index.js:
https://github.com/nodemailer/nodemailer/blob/master/lib/addressparser/index.js#L90
there is code that performs this flattening. The issue occurs when the email address parser attempts to process the following kind of malicious address header:
g0: g1: g2: g3: ... gN: victim@example.com;Because no recursion depth limit is enforced, the parser repeatedly invokes itself in the pattern
addressparser → _handleAddress → addressparser → ...for each nested group. As a result, when an attacker sends a header containing many colons, Nodemailer enters infinite recursion, eventually throwing Maximum call stack size exceeded and causing the process to terminate immediately. Due to the structure of this behavior, no authentication is required, and a single request is enough to shut down the service.
The problematic code section is as follows:
data.groupis expected to contain members separated by commas, but in the attacker’s payload the group contains colon(:)tokens. Because of this, the parser repeatedly triggers recursive calls for each colon, proportional to their number.PoC
As a result, when the colon is repeated beyond a certain threshold, the Node.js process terminates immediately.
Impact
The attacker can achieve the following:
Release Notes
nodemailer/nodemailer (nodemailer)
v7.0.11Compare Source
Bug Fixes
v7.0.10Compare Source
Bug Fixes
v7.0.9Compare Source
Bug Fixes
v7.0.7Compare Source
Bug Fixes
v7.0.6Compare Source
Bug Fixes
v7.0.5Compare Source
Bug Fixes
v7.0.4Compare Source
Bug Fixes
v7.0.3Compare Source
Bug Fixes
v7.0.2Compare Source
Bug Fixes
v7.0.1Compare Source
Bug Fixes
v7.0.0Compare Source
⚠ BREAKING CHANGES
Features
v6.10.1Compare Source
Bug Fixes
v6.10.0Compare Source
Features
Bug Fixes
v6.9.16Compare Source
Bug Fixes
v6.9.15Compare Source
Bug Fixes
v6.9.14Compare Source
Bug Fixes
v6.9.13Compare Source
Bug Fixes
v6.9.12Compare Source
Bug Fixes
v6.9.11Compare Source
Bug Fixes
v6.9.10Compare Source
Bug Fixes
v6.9.9Compare Source
Bug Fixes
v6.9.8Compare Source
Bug Fixes
v6.9.7Compare Source
Bug Fixes
v6.9.6Compare Source
Bug Fixes
v6.9.5Compare Source
Bug Fixes
v6.9.4Compare Source
v6.9.3Compare Source
v6.9.2Compare Source
v6.9.1Compare Source
Bug Fixes
v6.9.0Compare Source
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.