pgEdge Postgres MCP Server enables SQL queries against PostgreSQL databases through Model Context Protocol compatible clients. Prior to 1.1.0, custom pl-do tools interpolated JSON arguments into a PostgreSQL DO block delimited by fixed dollar-quote tags. An argument containing $mcp_custom_tool$ could terminate the block and inject arbitrary SQL statements, while $mcp_args$ could inject procedural code into a plpgsql block. Because the statement used the simple query protocol, injected text could include additional statements and transaction control, bypassing read_only and accessing data or modifying resources available to the connecting role. The issue requires at least one pl-do custom tool; sql and pl-func tools pass arguments as bind parameters and are not affected by this injection mechanism. This issue is fixed in 1.1.0.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-89"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/126xxx/CVE-2026-126197.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "1.1.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "b5b929305de7a22cd6ed7de8ae1be2ac90ca0868"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "v1.1.0",
"range": [
{
"fixed": "25c2aaed03398584ceea0dd71f7f67631c3dff4e"
}
],
"source": "REFERENCES_TAG"
}
]
}