{"id":"CVE-2026-102664","kind":"vulnerability","aliases":["CVE-2026-102664"],"related":[],"title":"ProxySQL: compressed MySQL packets leak heap data to clients","description":"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.","summary":"ProxySQL, a proxy in front of MySQL and PostgreSQL, does not check that decompressed MySQL data matches its declared length. An authenticated client using compression can make the proxy forward uninitialized heap memory, which may expose earlier queries, results, credentials or session state.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["database","mysql","package","postgresql","proxysql"],"not_affected_if":["auth-required","no-mysql-compression","not-proxysql"],"how_to_check":"- Check the ProxySQL version with `proxysql --version` and compare it with the fixed versions below.\n- Look for MySQL compression enabled on client connections in the ProxySQL configuration.","fix":"- Move to `3.0.10` on the 3.0 line, `3.1.10` on the 3.1 line, or `4.0.10` on the 4.0 line.","status":"open","published_at":"2026-11-04T21:17:41+00:00","first_seen_at":"2026-11-04T21:49:17+00:00","triaged_at":"2026-11-04T21:51:02+00:00","updated_at":"2026-11-04T21:51:02+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-04T21:51:02Z","model":"claude-haiku-5-5","output":{"fix":"- Move to `3.0.10` on the 3.0 line, `3.1.10` on the 3.1 line, or `4.0.10` on the 4.0 line.","reach":"network","title":"ProxySQL: compressed MySQL packets leak heap data to clients","impact":"medium","summary":"ProxySQL, a proxy in front of MySQL and PostgreSQL, does not check that decompressed MySQL data matches its declared length. An authenticated client using compression can make the proxy forward uninitialized heap memory, which may expose earlier queries, results, credentials or session state.","audience":"businesses","category":"package","nicknames":[],"who_cares":["proxysql","mysql","postgresql","database"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Heap memory leaks to clients, exposing queries, results and credentials","analyst_note":"","how_to_check":"- Check the ProxySQL version with `proxysql --version` and compare it with the fixed versions below.\n- Look for MySQL compression enabled on client connections in the ProxySQL configuration.","plain_action":"","needs_analyst":false,"not_affected_if":["no-mysql-compression","auth-required","not-proxysql"],"who_is_affected":"Teams that run ProxySQL in front of MySQL or PostgreSQL databases, where clients connect to the proxy and can negotiate MySQL compression. The sources say the attacker must be an authenticated MySQL client, so exposure depends on who holds database credentials. Deployments that do not run ProxySQL, or that restrict who can connect, are less exposed.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000735,"input_tokens":4383,"output_tokens":593,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-102664':12A,15A '-2026':11A,14A '3.0.10':79C,172C '3.1.10':80C,173C '4.0.10':82C,175C 'accept':88C 'actual':101C 'alloc':165C 'also':162C 'attack':107C 'attacker-control':106C 'authent':42B,112C 'backend':143C,144C 'buffer':132C 'buffer2array':123C 'caus':122C,163C 'check':32B,98C 'client':9A,43B,114C 'compress':2A,45B,117C 'control':108C 'credenti':60B,154C 'cve':10A,13A 'data':7A,36B,140C,153C 'databas':16B 'declar':39B 'decompress':34B,83C 'disclos':148C 'earlier':57B 'equal':104C 'error':145C 'excess':164C 'expos':56B 'fix':169C 'fork':72C 'forward':50B,138C 'front':25B 'header':136C 'heap':6A,52B,131C 'issu':167C 'leak':5A 'length':40B,103C,110C,121C,160C 'lib/mysql_data_stream.cpp':87C 'make':47B 'malform':159C 'match':37B 'may':55B 'memori':53B 'mysql':3A,17B,27B,35B,69C,84C,113C,134C 'negoti':116C 'ok':96C 'output':102C 'overst':119C 'packag':18B 'packet':4A,135C 'pars':125C 'payload':85C,109C,120C 'postgresql':19B,29B,76C 'prior':77C,149C 'proxi':23B,49B,67C 'proxysql':1A,20B,21B,64C 'queri':58B,151C 'respons':146C 'result':59B,152C 'return':94C 'session':62B,156C 'sql':150C 'stale':139C 'state':63B,157C 'stream':91C 'tail':128C 'uncompress':93C 'uniniti':51B,127C 'use':44B 'version':171C 'well':74C 'without':97C 'z':95C 'zlib':90C","nicknames":[],"mitigations":[],"who_affected":"Teams that run ProxySQL in front of MySQL or PostgreSQL databases, where clients connect to the proxy and can negotiate MySQL compression. The sources say the attacker must be an authenticated MySQL client, so exposure depends on who holds database credentials. Deployments that do not run ProxySQL, or that restrict who can connect, are less exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["database","high","mysql","package","postgresql","proxysql"],"campaign_type":null,"first_public_at":"2026-07-30T15:21:51+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:L","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-102664","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102664","severity":null,"published_at":"2026-11-04T21:17:41+00:00","modified_at":"2026-11-04T21:17:41+00:00","first_seen_at":"2026-11-04T21:49:17+00:00","fetched_at":"2026-11-04T21:49:17+00:00","note":null}],"documents":[{"id":70616,"url":"https://github.com/sysown/proxysql/commit/396c742f7d50b1f479e1157e296ee9d0aff1b724","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":70617,"url":"https://github.com/sysown/proxysql/commit/a8c1cef4d44c4beea7f6aa21b8a09a7cb8c75520","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":70618,"url":"https://github.com/sysown/proxysql/releases/tag/v3.0.10","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":70619,"url":"https://github.com/sysown/proxysql/releases/tag/v3.1.10","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":70620,"url":"https://github.com/sysown/proxysql/releases/tag/v4.0.10","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":70621,"url":"https://github.com/sysown/proxysql/security/advisories/GHSA-fvch-fpgq-pwfx","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-30T15:21:51+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}