Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Authorized low-privilege client controls tool parameters (PR:L) over the network with low complexity; primary impact is unauthorized cross-dataset reads (C:H), with limited/uncertain integrity impact (I:L) and no availability effect.
Primary rating from Vendor (Google).
CVSS VectorVendor: Google
Lifecycle Timeline
3DescriptionCVE.org
A SQL injection (CWE-89) and security boundary bypass (CWE-863) vulnerability exists in the prebuilt BigQuery forecasting tool (bigquery-forecast) of googleapis/mcp-toolbox.
The tool accepts client-controlled parameters (data_col, timestamp_col, and id_cols) as plain strings and interpolates them unescaped via fmt.Sprintf directly into a generated AI.FORECAST table-valued SELECT statement. While MCP Toolbox utilizes an allowedDatasets mechanism to restrict queries, this defense only validates the history_data parameter; the final assembled query is executed without re-validation.
An attacker can break out of the string literal fields (such as timestamp_col) to inject a valid multi-statement or cross-dataset query block. This allows an unauthorized user to bypass the operator-configured allowedDatasets boundary and read arbitrary BigQuery tables.
AnalysisAI
SQL injection and security-boundary bypass in Google's MCP Toolbox for Databases (googleapis/mcp-toolbox) lets a low-privileged MCP client abuse the prebuilt BigQuery forecasting tool (bigquery-forecast) to read arbitrary BigQuery tables. The tool interpolates client-supplied column parameters (data_col, timestamp_col, id_cols) unescaped into a generated AI.FORECAST SELECT statement, and the operator-configured allowedDatasets guard only validates the history_data parameter - not the final assembled query - so an attacker breaks out of a string literal to reach datasets that should be off-limits. There is no public exploit identified at time of analysis; risk derives from the injection primitive plus the confidentiality impact of cross-dataset reads.
Technical ContextAI
MCP Toolbox for Databases is a Google open-source server that exposes database operations to LLM/agent clients through the Model Context Protocol. The affected tool builds a BigQuery AI.FORECAST table-valued function query by concatenating user-controlled identifiers via fmt.Sprintf without escaping, which is the classic CWE-89 (improper neutralization of SQL elements) failure applied to identifier/string-literal fields. It is compounded by CWE-863 (incorrect authorization): the allowedDatasets control is a validation applied to one input (history_data) rather than to the effective query, so the authorization check and the executed statement diverge. The linked PR #3324 shows the remediation pattern - replacing NewStringParameter with NewStringParameterWithEscape ('single-quotes' escaping), swapping ValidColumnName/ContainsRune checks for stricter ValidColumnParam/ValidContributionMetricParam validators, and moving the allowedDatasets dry-run check so it validates the fully assembled query (dryRunJob.ReferencedTables) rather than a single raw parameter.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the changes from https://github.com/googleapis/mcp-toolbox/pull/3324, which introduce quote-escaping for the column/metric parameters and, critically, move the allowedDatasets validation to a dry-run of the fully assembled query so referenced tables are re-checked before execution; upgrade to the first tagged release that includes this PR once published. As compensating controls until you can upgrade: disable or unregister the BigQuery forecasting tool (bigquery-forecast) from the toolset if it is not needed; do not treat allowedDatasets as a hard security boundary for this tool and instead enforce dataset isolation at the IAM/service-account layer by granting the MCP Toolbox service account read access only to the specific datasets it legitimately needs (accepting that this narrows what any tool can query); and restrict which clients/identities may reach the MCP endpoint. Each of these reduces functionality - removing the tool eliminates forecasting, and tightening IAM may break other tools that legitimately query broader datasets - so scope them to the forecasting workflow.
Authentication bypass in googleapis/mcp-toolbox allows remote unauthenticated attackers to gain access by presenting opa
Authentication bypass in googleapis/mcp-toolbox lets remote unauthenticated attackers reach protected tools and backing
Authorization bypass in Google's MCP Toolbox for Databases (googleapis/mcp-toolbox) allows authenticated low-privilege c
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-46317
GHSA-wvx3-gvxv-cmxc