← back

CVE-2026-48772

CRITICAL · 10.0
hype MIXED · 42 hack

Published advisory + patch signal legitimacy, but no KEV, PoC, or in-the-wild reports yet.

What: ProxySQL 2.0.0–3.0.8 accepts spoofed source IPs via malformed PROXY protocol v1 frames, bypassing client_addr-based routing and ACL rules (CVSS 10.0 CRITICAL).

Why it matters: Published 19 June 2026; patch (3.0.9) available same day. No KEV listing yet, but vulnerability enables read-write splitting and schema isolation bypass on any exposed frontend. Affects real deployments using client_addr for access control.

Where it's seen: Threat feeds and security social media amplifying NVD advisory within hours. No public PoC, active exploitation reports, or mass scanning chatter observed yet. Discussion is advisory-driven, not incident-driven.

RISK: CRITICAL — Unauthenticated ACL and routing bypass; default config vulnerable; patch released.

Generated by claude-haiku-4-5 from public posts and authoritative metadata. AI can make mistakes — verify against vendor advisories before acting. 6/20/2026, 4:39:32 AM

Description

ProxySQL is a proxy for MySQL and its forks, as well as PostgreSQL. In versions 2.0.0 through 3.0.8, the ProxySQL MySQL frontend accepts the `PROXY UNKNOWN <addr> <addr> <port> <port>\r\n` PP1 frame as a well-formed PROXY protocol header. The HAProxy PROXY protocol v1 specification says that when the protocol token is `UNKNOWN`, the receiver MUST ignore any address fields that follow it, because the proxy has declared it cannot determine the client identity. ProxySQL parses those address fields anyway via `sscanf` and writes the spoofed source address into the session's `addr.addr` field. From there it flows directly into the query-rule matcher, where the `client_addr` predicate decides routing and ACL. When `mysql-proxy_protocol_networks = '*'` (the default), any TCP peer can send a PP1 frame and choose any source IP claim. With that, any `mysql_query_rules` row pinned to a `client_addr` value is forgeable: the attacker writes the address they want to match into the PP1 line, and ProxySQL routes their query as if it came from that address. In practice this is a routing and ACL bypass. Real deployments use `client_addr` for read-write splitting (internal apps go to the primary, public traffic to read replicas), per-app schema pinning, and query-filter rules (DDL allowed only from admin CIDR, public queries blocked from dangerous patterns). An attacker that can reach the frontend port can forge their way into any of those routes. Version 3.0.9 patches this issue.

CVSS 3.1 breakdown

Exploitability 3.9 · Impact 5.8
vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
Attack vector
Network
Complexity
Low
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

Weaknesses