CVE-2026-92595 PUBLISHED

Nodemailer before 9.1.1 Security Sandbox Bypass via resolveContent

Assigner: VulnCheck
Reserved: 16.09.2026 Published: 16.09.2026 Updated: 16.09.2026

Nodemailer (npm package nodemailer) versions 9.1.0 and earlier do not honor the disableFileAccess and disableUrlAccess sandbox options when message content is resolved through the public plugin API MailMessage.resolveContent() using the documented legacy three-argument signature resolveContent(data, key, callback). Because shared.resolveContent() normalizes the missing options argument to an empty object, the message-level flags copied into mail.data by the MailMessage constructor are discarded, and resolveContentValue() skips both access-control checks, reaching nmfetch(url) or fs.createReadStream(path). As a result, plugin or application code that resolves untrusted message content (html, text, attachment path or href) via this API can be induced to read arbitrary local files or issue outbound HTTP(S) requests (server-side request forgery), bypassing the sandbox the application enabled. The internal paths used by transporter.sendMail() (resolveAll(), _convertDataImages(), and the MIME streaming path) are not affected. Fixed in version 9.1.1.

Metrics

CVSS Vector: 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
CVSS Score: 6

Product Status

Vendor nodemailer
Product nodemailer
Versions Default: unaffected
  • affected from 0 to 9.1.1 (excl.)
  • Version 9.1.1 is unaffected

Credits

  • Hcamael reporter

References

Problem Types

  • External Control of File Name or Path CWE