CVE-2026-48772: CWE-348: Use of Less Trusted Source in sysown proxysql
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.
AI Analysis
Technical Summary
ProxySQL's MySQL frontend accepts the PROXY protocol v1 frame with the UNKNOWN token as valid and parses the subsequent address fields despite the protocol specification requiring these to be ignored. This parsing flaw allows an attacker to forge the source IP address in the session's address field, which is used by query-rule matchers for routing and ACL decisions. When the default configuration allows any TCP peer to send such frames, attackers can manipulate routing and access control policies that depend on client_addr, effectively bypassing intended restrictions. The issue affects versions 2.0.0 through 3.0.8 and is fixed in version 3.0.9.
Potential Impact
An attacker with network access to the ProxySQL frontend port can spoof source IP addresses in the PROXY protocol header to bypass routing and access control rules based on client IP. This can lead to unauthorized query routing, including bypassing read-write splitting, schema pinning, and query filtering policies, potentially allowing unauthorized data access or modification. The vulnerability has a CVSS score of 10.0, indicating critical impact on confidentiality and integrity without requiring privileges or user interaction.
Mitigation Recommendations
Upgrade ProxySQL to version 3.0.9 or later, where this vulnerability is patched. Until upgrading, consider restricting access to the ProxySQL frontend port to trusted networks and disabling or carefully configuring the mysql-proxy_protocol_networks setting to limit which peers can send PROXY protocol frames. Patch status is not explicitly confirmed in the advisory, but version 3.0.9 is stated as the fix version.
CVE-2026-48772: CWE-348: Use of Less Trusted Source in sysown proxysql
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 v3.1
Score 10.0critical
Affected software
pkg:github/sysown/proxysqlRun on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
ProxySQL's MySQL frontend accepts the PROXY protocol v1 frame with the UNKNOWN token as valid and parses the subsequent address fields despite the protocol specification requiring these to be ignored. This parsing flaw allows an attacker to forge the source IP address in the session's address field, which is used by query-rule matchers for routing and ACL decisions. When the default configuration allows any TCP peer to send such frames, attackers can manipulate routing and access control policies that depend on client_addr, effectively bypassing intended restrictions. The issue affects versions 2.0.0 through 3.0.8 and is fixed in version 3.0.9.
Potential Impact
An attacker with network access to the ProxySQL frontend port can spoof source IP addresses in the PROXY protocol header to bypass routing and access control rules based on client IP. This can lead to unauthorized query routing, including bypassing read-write splitting, schema pinning, and query filtering policies, potentially allowing unauthorized data access or modification. The vulnerability has a CVSS score of 10.0, indicating critical impact on confidentiality and integrity without requiring privileges or user interaction.
Mitigation Recommendations
Upgrade ProxySQL to version 3.0.9 or later, where this vulnerability is patched. Until upgrading, consider restricting access to the ProxySQL frontend port to trusted networks and disabling or carefully configuring the mysql-proxy_protocol_networks setting to limit which peers can send PROXY protocol frames. Patch status is not explicitly confirmed in the advisory, but version 3.0.9 is stated as the fix version.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-05-22T19:39:05.357Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a359d6df198dc38c1220397
Added to database: 06/19/2026, 19:50:05 UTC
Last enriched: 06/26/2026, 21:50:04 UTC
Last updated: 08/01/2026, 19:18:00 UTC
Views: 156
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.