GHSA-wqvq-jvpq-h66f
### Summary Nodemailer's `disableFileAccess` and `disableUrlAccess` options are intended to prevent message content and attachments from reading local files or fetching URLs. The normal MIME streaming path enforces those options in `MimeNode._getStream()`. However, `jsonTransport` serializes messages by calling `mail.normalize()`, which resolves `html`, `text`, alternatives, calendar events, and attachments through `shared.resolveContent()` before MIME generation. `shared.resolveContent()` reads local files and fetches HTTP(S) URLs directly, without receiving or checking `disableFileAccess` or `disableUrlAccess`. As a result, applications that use `jsonTransport` as a safe serializer or queue payload generator while relying on `disableFileAccess` / `disableUrlAccess` can still be made to read local files into the generated JSON output or make outbound HTTP requests when an attacker controls message content fields such as attachment `path` or `text.href`. The same missing-enforcement root cause is also reachable before normal streaming when `attachDataUrls` causes `_convertDataImages()` to call `mail.resolveContent(mail.data, 'html', ...)`; this should be fixed with the same access-control check. ### Details Source-to-sink evidence: - `lib/nodemailer.js:42-45` selects `JSONTransport` when `createTransport({ jsonTransport: true, ... })` is used. - `lib/mailer/mail-message.js:34-39` copies transport-level `disableFileAccess` and `disableUrlAccess` options into `mail.data`. - `lib/json-transport/index.js:52-76` serializes mail by calling `mail.normalize((err, data) => ...)`. - `lib/mailer/mail-message.js:46-135` implements `resolveAll()` and calls `shared.resolveContent(...args, ...)` for `html`, `text`, `watchHtml`, `amp`, `icalEvent`, alternatives, and attachments. - `lib/shared/index.js:506-562` implements `resolveContent()`. - `lib/shared/index.js:540-541` fetches HTTP(S) content with `nmfetch(content.path || content.href)`. - `lib/shared/index.js:549-550` read
Properties
- ghsa_id
- GHSA-wqvq-jvpq-h66f
- severity
- medium
- summary
- Nodemailer jsonTransport bypasses disableFileAccess and disableUrlAccess during message normalization
- cvss_score
- 5.4
- cve_id
- GHSA-wqvq-jvpq-h66f
- cvss_vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
- is_ghsa_only
- true
- ghsa_published
- 2026-06-15T17:35:10Z
- source_url
- https://github.com/advisories/GHSA-wqvq-jvpq-h66f
- ghsa_updated
- 2026-06-15T17:35:12Z
Related Entities (4)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (1)
REPORTED_BY (1)
Explore deeper with Ninja Signal's threat intelligence graph