---
id: CVE-2026-102664
title: >-
  ProxySQL: Uninitialized heap read in MySQL compressed packet decompression via
  zlib path
summary: >-
  ProxySQL is a proxy for MySQL and its forks, as well as PostgreSQL. Prior to
  3.0.10, 3.1.10, and 4.0.10, decompress_mysql_payload() in
  lib/mysql_data_stream.cpp accepts a zlib stream when uncompress() returns Z_OK
  without checking that t…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:L'
cvssSource: cna
cwe:
  - CWE-908
vendor: sysown
product: proxysql
affected:
  - proxysql < 3.0.10
  - 'proxysql >= 3.1.0, < 3.1.10'
  - 'proxysql >= 4.0.0, < 4.0.10'
published: '2026-11-04'
updated: '2026-11-04'
sourceUpdated: '2026-11-04T20:42:25.887Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-102664'
references:
  - url: 'https://github.com/sysown/proxysql/security/advisories/GHSA-fvch-fpgq-pwfx'
    label: 'https://github.com/sysown/proxysql/security/advisories/GHSA-fvch-fpgq-pwfx'
  - url: >-
      https://github.com/sysown/proxysql/commit/396c742f7d50b1f479e1157e296ee9d0aff1b724
    label: >-
      https://github.com/sysown/proxysql/commit/396c742f7d50b1f479e1157e296ee9d0aff1b724
  - url: >-
      https://github.com/sysown/proxysql/commit/a8c1cef4d44c4beea7f6aa21b8a09a7cb8c75520
    label: >-
      https://github.com/sysown/proxysql/commit/a8c1cef4d44c4beea7f6aa21b8a09a7cb8c75520
  - url: 'https://github.com/sysown/proxysql/releases/tag/v3.0.10'
    label: 'https://github.com/sysown/proxysql/releases/tag/v3.0.10'
  - url: 'https://github.com/sysown/proxysql/releases/tag/v3.1.10'
    label: 'https://github.com/sysown/proxysql/releases/tag/v3.1.10'
  - url: 'https://github.com/sysown/proxysql/releases/tag/v4.0.10'
    label: 'https://github.com/sysown/proxysql/releases/tag/v4.0.10'
tags:
  - cve.org
ingestedAt: '2026-11-05T21:36:00.571Z'
epss: 0.003
epssPercentile: 0.22923
---

## Overview

ProxySQL is a proxy for MySQL and its forks, as well as PostgreSQL. Prior to 3.0.10, 3.1.10, and 4.0.10, decompress_mysql_payload() in lib/mysql_data_stream.cpp accepts a zlib stream when uncompress() returns Z_OK without checking that the actual output length equals the attacker-controlled payload_length. An authenticated MySQL client that negotiates compression can overstate payload_length, causing buffer2array() to parse the uninitialized tail of a heap buffer as MySQL packet headers and forward stale data to the backend. Backend error responses can disclose prior SQL queries, result data, credentials, or session state, and malformed lengths can also cause excessive allocations. This issue is fixed in versions 3.0.10, 3.1.10, and 4.0.10.

## Affected

- `proxysql < 3.0.10`
- `proxysql >= 3.1.0, < 3.1.10`
- `proxysql >= 4.0.0, < 4.0.10`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
