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, a proxy for MySQL and PostgreSQL, in versions 2.0.0 through 3.0.8 accepts the PROXY protocol v1 frame with the UNKNOWN token as valid and parses the following address fields despite the protocol specification requiring these to be ignored. This parsing flaw allows an attacker to spoof the source IP address used in query routing and ACL decisions, enabling routing and ACL bypass. The vulnerability affects configurations where 'mysql-proxy_protocol_networks' is set to '*', the default, allowing any TCP peer to send a forged PROXY protocol frame. This can lead to unauthorized routing of queries, including bypassing read-write splitting, schema pinning, and query filtering rules. The issue is patched in version 3.0.9.
Potential Impact
An attacker able to connect to the ProxySQL frontend port can forge source IP addresses in the PROXY protocol header, bypassing routing and ACL rules that rely on client IP. This can result in unauthorized query routing, allowing attackers to access primary databases, bypass query restrictions, or circumvent administrative controls. 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 upgrade, consider restricting access to the ProxySQL frontend port to trusted networks and avoid using the default 'mysql-proxy_protocol_networks = "*"' setting. Patch status is not explicitly confirmed in the vendor advisory, but version 3.0.9 is stated to fix the issue.
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, a proxy for MySQL and PostgreSQL, in versions 2.0.0 through 3.0.8 accepts the PROXY protocol v1 frame with the UNKNOWN token as valid and parses the following address fields despite the protocol specification requiring these to be ignored. This parsing flaw allows an attacker to spoof the source IP address used in query routing and ACL decisions, enabling routing and ACL bypass. The vulnerability affects configurations where 'mysql-proxy_protocol_networks' is set to '*', the default, allowing any TCP peer to send a forged PROXY protocol frame. This can lead to unauthorized routing of queries, including bypassing read-write splitting, schema pinning, and query filtering rules. The issue is patched in version 3.0.9.
Potential Impact
An attacker able to connect to the ProxySQL frontend port can forge source IP addresses in the PROXY protocol header, bypassing routing and ACL rules that rely on client IP. This can result in unauthorized query routing, allowing attackers to access primary databases, bypass query restrictions, or circumvent administrative controls. 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 upgrade, consider restricting access to the ProxySQL frontend port to trusted networks and avoid using the default 'mysql-proxy_protocol_networks = "*"' setting. Patch status is not explicitly confirmed in the vendor advisory, but version 3.0.9 is stated to fix the issue.
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: 6/19/2026, 7:50:05 PM
Last enriched: 6/19/2026, 8:05:21 PM
Last updated: 6/19/2026, 11:27:02 PM
Views: 5
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.