Skip to content
Heist/ feed
HighFix available

Nodemailer: Quadratic backtracking in the addressparser free-text fallback allows remote denial of service

Type: advisorySource: OSV1 source record

### Summary When `addressparser` finds no address by its strict reading, it falls back to pulling one out of the free text with `/\s*\b[^@\s]+@[^\s]+\b\s*/`. That pattern backtracks quadratically: `[^@\s]+` is retried from every offset and rescans the run to the next `@` each time. A single header value holding a long whitespace-free run with no usable `@` blocks the Node.js event loop for tens of seconds. It is cheaper to exploit than GHSA-prgh-xp8r-p3m5: 273KB is enough for ~43s, where the comment-joined shape needed ~1.5MB for ~10s. ### Details The fallback in `src/addressparser/index.ts` ran the pattern as a search. `[^@\s]+` crosses neither whitespace nor `@`, so from each start offset it scans forward to the next `@` or to the end of the run and then fails, and the engine simply advances one character and repeats. Three shapes make every offset fail: - the run holds no `@` at all - the only `@` has nothing after it - the only `@` has nothing before it A fourth reaches it with a valid address present but placed past a long run, so the long run is walked before the match is found. ### PoC ```js const addressparser = require('nodemailer/lib/addressparser'); const s = Date.now(); addressparser(' >' + '>[x][x]'.repeat(40000)); // 273KB console.log(Date.now() - s, 'ms'); // ~43000 ms, blocking ``` Measured on 10.0.5: | Value | Parse time | | --- | --- | | `'[x]'.repeat(40000)` (117KB) | 9.0 s | | `'[x]'.repeat(40000) + '@'` (117KB) | 8.9 s | | `'@' + '[x]'.repeat(40000)` (117

Announced Group revision 1
Original source ↗

GHSA-v53p-9fqp-m79j

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-v53p-9fqp-m79j

nodemailer

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
10.0.6

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0"
          },
          {
            "fixed": "10.0.6"
          }
        ]
      }
    ],
    "package": {
      "name": "nodemailer",
      "purl": "pkg:npm/nodemailer",
      "ecosystem": "npm"
    },
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-v53p-9fqp-m79j/GHSA-v53p-9fqp-m79j.json",
      "last_known_affected_version_range": "<= 10.0.5"
    }
  }
]
Related CVEs
CVE-2026-100700

Source reference: /aliases

Publisher severity

high

Source reference: /database_specific/severity

Linked CVE context

These ratings describe the referenced vulnerabilities and products. They are not a severity rating for every application using this dependency.

Event
#33261 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement