<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-10T13:51:45.121171+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-rgwj-5xj2-c3m3</id>
    <title>GHSA-rgwj-5xj2-c3m3 — MySQL2: Unbounded zlib inflate in compressed MySQL protocol handler allows decompression-bomb DoS</title>
    <updated>2026-10-10T13:51:45.227050+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: mysql2</p>
<p>## Vulnerability Details</p>
<p>**File**: `lib/compressed_protocol.js`
**Line**: 43 (`zlib.inflate(body, (err, data) =&gt; { ... })` inside `handleCompressedPacket`)</p>
<p>### Root Cause
When a connection is created with `compress: true` (and the server advertises `CLIENT_COMPRESS`), every incoming packet is unwrapped by `handleCompressedPacket()` in `lib/compressed_protocol.js`, which calls:</p>
<p>```js
zlib.inflate(body, (err, data) =&gt; { ... });
```</p>
<p>No options object (in particular, no `maxOutputLength`) is passed. Node's zlib convenience methods default `maxOutputLength` to `buffer.kMaxLength`, which on this platform is `Number.MAX_SAFE_INTEGER` — i.e. effectively unbounded until the process runs out of memory. The 3-byte "length of payload before compression" field in the compressed-packet header is read (`packet.readInt24()`) but is only used to branch on `!== 0`; it is never used to cap or validate the actual inflate output size, and the real decompressed size is determined purely by the attacker-supplied deflate stream.</p>
<p>Because DEFLATE can reach compression ratios over 1000:1 for crafted repetitive input, an attacker who controls (or MITMs, on a non-TLS connection) the MySQL server endpoint can send a single small compressed packet that expands to gigabytes in the client's memory — a classic decompression-bomb / "zip bomb" applied to MySQL's client-compression protocol.</p>
<p>### Attack Scenario
1. Application connects with `mysql2`/`mysql2/promise` using `compress: true` (a documented opt…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-rgwj-5xj2-c3m3"/>
  </entry>
</feed>
