Summary
CVE-2026-48774 is a high-severity improper input validation vulnerability (CVSS 7.5) in ProxySQL versions 3.0.0 through 3.0.8. The GenAI/MCP run_sql_readonly tool fails to enforce its documented read-only contract on MySQL targets, allowing an unauthenticated remote attacker to execute arbitrary write or administrative SQL statements against the backend database by injecting a second statement into the payload. A fix is available in ProxySQL version 3.0.9.
Technical details
- Root cause: The
run_sql_readonlytool validates SQL input using only a first-keyword allowlist (e.g., must start withSELECT) and a substring blacklist. However, backend connections are established with theCLIENT_MULTI_STATEMENTSflag enabled, which permits multiple semicolon-separated SQL statements to be executed in a single call. The blacklist does not cover common side-effecting statements such asRENAME TABLE,SET,RESET,LOCK TABLES, andKILL. - Trigger condition: Any caller that can reach the
/mcp/queryHTTP endpoint and send arun_sql_readonlytool call with a multi-statement payload. By default,mcp-query_endpoint_authis empty, meaning no authentication token is required in the default configuration. - Attack vector: Network-accessible HTTP endpoint (
/mcp/query, default port 6071, JSON-RPC 2.0). The endpoint is reachable without credentials in the default state. An example payload —SELECT 1; RENAME TABLE testdb.table TO testdb.table_renamed— is accepted by the validator because the string starts withSELECTandRENAME TABLEis absent from the blacklist. - Impact: The read-only security contract is violated. An attacker can perform unauthorized write or administrative operations (table renames,
SET,RESET,LOCK TABLES,KILL) against the backend MySQL database, limited only by the database privileges of the configured MCP target account. A successful live exploitation was confirmed in the advisory: the MCP response reported success for theSELECTwhile direct backend verification confirmed the table had been renamed. The CVSS Integrity impact is rated High (I:H). A secondary impact is connection pool poisoning ("Commands out of sync" state).
Affected software
- ProxySQL versions 3.0.0 through 3.0.8 (inclusive)
Severity
- CVSS v3.1 base score: 7.5 (HIGH)
- Vector string:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Mitigation and recommended actions
- Immediate — upgrade: Update ProxySQL to version 3.0.9, which contains the vendor-provided fix. Version 3.0.9 was released on June 5, 2026.
- If immediate patching is not possible — operator-level workarounds:
- Set a non-empty
mcp-query_endpoint_authbearer token before exposing/mcp/queryto any network:SET mcp-query_endpoint_auth='<strong-token>'; - Disable the MCP server entirely if not in active use:
SET mcp-enabled=false; - Restrict the MCP listener’s network exposure so that
/mcp/queryis not reachable from untrusted networks or the internet. - Configure the MCP backend target account as a database-level read-only user to limit the blast radius if exploitation occurs.
- Add temporary MCP query rules to block payloads containing semicolons or other obvious multi-statement patterns.
- Set a non-empty
IONIX Status
The IONIX research team is tracking ongoing exploitation attempts and recommends immediate patching. Potentially affected assets are outlined in this post.

