Update dependency nodemailer to v7 [SECURITY]#150
Open
renovate[bot] wants to merge 1 commit intomasterfrom
Open
Update dependency nodemailer to v7 [SECURITY]#150renovate[bot] wants to merge 1 commit intomasterfrom
renovate[bot] wants to merge 1 commit intomasterfrom
Conversation
54028ad to
637cd30
Compare
637cd30 to
48b6235
Compare
499695a to
a97fa69
Compare
a97fa69 to
9dbce54
Compare
9dbce54 to
d005ca9
Compare
80eb79b to
a216f8f
Compare
a216f8f to
7601be3
Compare
7601be3 to
f37f7cd
Compare
83a753e to
3b0fc4f
Compare
509b39e to
3c2119a
Compare
3c2119a to
062db94
Compare
1d7bfa2 to
0f7ac32
Compare
0f7ac32 to
af582a3
Compare
af582a3 to
2503318
Compare
2503318 to
e085f3e
Compare
b67f2bf to
effdabd
Compare
68b0d7f to
018a397
Compare
018a397 to
dfe3295
Compare
dfe3295 to
baf1b03
Compare
6327bf6 to
897ce28
Compare
897ce28 to
e51e593
Compare
bc0f1af to
8e90606
Compare
8e90606 to
60ce373
Compare
60ce373 to
5a92a77
Compare
5a92a77 to
9b60c59
Compare
9b60c59 to
ee3587d
Compare
ee3587d to
1299c18
Compare
1299c18 to
5d6372d
Compare
5d6372d to
9acedb8
Compare
9acedb8 to
3bb3805
Compare
08452cb to
85ea7f9
Compare
85ea7f9 to
d4b3dee
Compare
d4b3dee to
c718d21
Compare
c718d21 to
503d3a4
Compare
503d3a4 to
626470e
Compare
626470e to
3c3c79b
Compare
679f21f to
534106d
Compare
c79e7b1 to
47b5596
Compare
47b5596 to
8d68346
Compare
a6e14ce to
b1b571a
Compare
c6e2bd3 to
d4dc694
Compare
f209080 to
66bd9ed
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
6.9.8→7.0.11GitHub 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
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 was generated by Mend Renovate. View the repository job log.