Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with AI feature access
-
DeliveryCraft SELECT with blocklist-absent DB function
-
ExploitSubmit via AI runQuery() tool
-
ExecutionChartbrew forwards raw SQL to database
-
PersistPrivileged DB executes file/network/command operation
-
ImpactData exfiltrated, files written, or privileges altered
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation completeness
|
| Exploitation Conditions | Requires an authenticated Chartbrew account whose team has the AI feature enabled and configured with an OpenAI model, plus a database connection of type postgres, mysql, or clickhouse (the source types routed through the SQL normalization path). The attacker submits a query through the AI orchestrator's runQuery() tool; the pre-5.2.2 read-only enforcement only blocked seven keywords (DROP, DELETE, UPDATE, INSERT, TRUNCATE, ALTER, CREATE), so any dangerous statement or DB function outside that list (file/network/privilege functions, EXEC/CALL, GRANT/REVOKE) passes through. LIMITING FACTORS: exploitation demands valid authentication with AI-feature access (PR:L, not unauthenticated); actual impact is bounded by the privileges of the configured database user (a least-privilege read-only account greatly reduces damage) and by the database engine and its configuration (e.g., whether file/program functions are permitted). No user interaction by a victim is required. |
| Impact | This is a genuine but access-gated integrity/confidentiality issue rather than a mass-exploitation emergency. The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H, score 6.5) deliberately models the impact on the SUBSEQUENT system (the connected database), keeping vulnerable-system VC/VI/VA at N - a defensible choice since the flaw abuses Chartbrew to attack the backing DB. PR:L confirms authentication is required (a user with AI feature access), and there is no user-interaction requirement. There is NO EPSS score, NO CISA KEV listing, and NO public exploit provided - so exploitation status is 'no public exploit identified at time of analysis,' though the fix commit (8c8412ed) publicly enumerates the exact bypass payloads (pg_read_file, lo_export, COPY...TO PROGRAM, INTO OUTFILE, LOAD_FILE, GRANT, EXEC/CALL), which materially lowers the bar for exploit development. Realized impact is conditional and self-described as 'depending on the database engine, configuration, and database-user privileges' - meaning a least-privilege read-only DB account sharply limits blast radius, while a permissive DB account could yield file access, internal network pivoting, privilege changes, or command execution. Net: a real priority for any Chartbrew operator who has enabled the AI feature and connected privileged DB accounts, but not a drop-everything internet-wide threat given the authentication gate and niche footprint. Note the score tension: my own component-impact reading lands higher than 6.5, but that is a modeling difference (impacted component = the DB), not a contradiction. |
| Exploit ScenarioDerived | An authenticated Chartbrew user who has access to the AI query feature asks the AI orchestrator to run a query and supplies a SELECT statement embedding a dangerous database function or statement not covered by the seven-keyword blocklist (e.g., PostgreSQL pg_read_file()/lo_export(), or MySQL LOAD_FILE()/INTO OUTFILE). Because no SQL injection or obfuscation is needed, the runQuery() tool forwards it to the connected database, and if the database user is sufficiently privileged the attacker reads/writes server files, reaches internal network resources, or alters data. No public POC exists, but the patch diff publicly documents the exact bypass payloads. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
Authenticated Chartbrew users with access to the AI chart-generation feature can execute dangerous SQL statements and database functions that the application's read-only filter fails to block, because versions prior to 5.2.2 relied on a blocklist covering only seven keywords (DROP, DELETE, UPDATE, INSERT, TRUNCATE, ALTER, CREATE). Depending on the database engine, its configuration, and the privileges of the configured connection user, this can result in file read/write, outbound network access from the database server, privilege changes, command execution, or data modification - the independent assessment rates it CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L, reflecting high confidentiality and integrity impact to the connected database with scope change. Exploitation requires a valid Chartbrew account on a team with the AI feature enabled and configured against a postgres, mysql, or clickhouse connection; no public exploit code was identified at time of analysis and there is no CISA KEV listing, making this an access-gated issue rather than a mass-exploitation emergency.
RemediationAI
Upgrade to Chartbrew 5.2.2 or later, which is the vendor-released patch that replaces the seven-keyword blocklist with a SELECT/WITH allowlist, rejects multi-statement queries and SQL comments, blocks file/network/privilege functions, and clamps row limits - see https://github.com/chartbrew/chartbrew/releases/tag/v5.2.2 and advisory GHSA-cp8j-2xwc-hxg8. Where immediate upgrade is not possible, the highest-value compensating control is to downgrade the privilege of every database connection configured in Chartbrew to a strictly read-only account limited to the specific schemas and tables needed for dashboards; this does not remove the flaw but neutralizes the write, privilege-escalation, and command-execution outcomes, and its trade-off is that any dashboards relying on broader access will break. Additionally, disable the AI feature for untrusted teams if it is not required, since the vulnerability is only reachable through the AI orchestrator's runQuery() tool and requires an authenticated user on a team where AI is enabled - the trade-off is loss of the AI charting capability. On the database side, revoke or deny execution of SUPERUSER-only and file/system functions (PostgreSQL pg_read_file, pg_read_binary_file, pg_ls_dir, lo_export, lo_import, and COPY TO/FROM PROGRAM; MySQL LOAD_FILE, LOAD DATA, INTO OUTFILE; ClickHouse file() and url() table functions) for the Chartbrew database user, restrict the database server's outbound network access, and avoid running the DB service as an OS user with filesystem write permissions - these measures materially reduce impact but require engine-specific configuration and may need to be re-applied after major DB upgrades. Rotate credentials for any database connection that was exposed to a low-trust Chartbrew team and review database logs for anomalous SELECT statements invoking the functions listed above.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-184 (Incomplete List of Disallowed Inputs). Chartbrew is a Node.js open-source dashboarding application whose AI orchestrator exposes a runQuery() tool in server/modules/ai/orchestrator/tools/runQuery.js, allowing an LLM-driven workflow to issue SQL against a connected data source. Before 5.2.2, read-only enforcement consisted solely of a case-insensitive whole-word blocklist of seven DML/DDL verbs applied to the query string, with no allowlist of permitted statement types, no multi-statement rejection, no comment handling, and no coverage of database-specific functions. Consequently any construct outside that list passes through unmodified - PostgreSQL pg_read_file(), pg_read_binary_file(), pg_ls_dir(), lo_export(), lo_import(), COPY ... TO PROGRAM; MySQL LOAD_FILE(), LOAD DATA, INTO OUTFILE/DUMPFILE; ClickHouse file() and url() table functions; and engine-level GRANT/REVOKE, EXEC/CALL and stored-procedure invocation. This is not classic SQL injection: the attacker supplies the query directly through an intended interface, so no keyword obfuscation or escaping bypass is needed. The patch (commit 8c8412edce56093e81b524e0235a796c7dd42336) replaces the blocklist with a normalizeSqlQuery() allowlist that requires the statement to begin with SELECT or WITH, rejects semicolon-separated multi-statements, rejects SQL comments (--, /*, */), and screens against an expanded pattern list including the file/network/privilege functions above; it also adds a getSafeRowLimit() clamp (default 1000, maximum 10000 rows) for postgres, mysql and clickhouse sources. The same commit also bumps the default orchestrator model string from gpt-5-nano to gpt-5.4-nano, which is unrelated to the security fix.
Know when Chartbrew gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H
Authenticated AI-feature user (PR:L) sends a query over the network (AV:N/AC:L); scope changes to the connected database (S:C) with potential file/data read and write (C:H/I:H) and possible data destruction (A:L), conditional on DB privileges.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Chartbrew is an open-source web application that can connect directly to databases and APIs and use the data to create charts. Prior to 5.2.2, Chartbrew's runQuery() implementation in server/modules/ai/orchestrator/tools/runQuery.js attempts to enforce read-only database access with a blocklist containing only seven SQL keywords. An authenticated user with AI feature access can submit dangerous statements or database functions that are absent from the read-only keyword blocklist, causing them to execute without SQL injection or keyword-obfuscation techniques. Depending on the database engine, configuration, and database-user privileges, this can expose or write files, access internal network resources, change database privileges, execute commands, or alter data. This issue is fixed in version 5.2.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
SQL injection in Chartbrew before 4.8.3. PoC available.
Remote code execution in Chartbrew prior to version 4.8.1 allows authenticated attackers to execute arbitrary code throu
Chartbrew versions up to 4.8.4 is affected by missing authentication for critical function (CVSS 7.5).
Remote code execution in Chartbrew versions prior to 4.8.1 allows authenticated attackers with high privileges to execut
Chartbrew versions before 4.8.1 fail to validate chart ownership during modification operations, allowing authenticated
Chartbrew versions prior to 4.8.4 allow authenticated users to upload arbitrary files by bypassing file type validation,
Authenticated users in Chartbrew 4.9.0 can modify or delete dashboard sharing policies across projects they don't own du
Horizontal privilege escalation in Chartbrew 4.9.0 allows authenticated low-privilege team members to access datasets, d
SQL injection in Chartbrew versions prior to 5.2.3 allows an unauthenticated remote attacker to break out of an intended
Server-Side Request Forgery in Chartbrew versions prior to 4.8.5 allows authenticated users to create API data connectio
Cross-tenant authorization bypass in Chartbrew versions prior to 4.9.0 allows authenticated attackers to exfiltrate sens
Unauthenticated remote attackers can access and refresh private chart data in Chartbrew 4.9.0 via an exposed API endpoin
EUVD-2026-84213
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB