Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach network-exposed docs server
-
ExploitPOST crafted SQL to /api/v1/query
-
ExecutionDuckDB executes filesystem-read function
-
ImpactExfiltrate sensitive local files
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two concrete prerequisites must hold: (1) a running |
| Impact | The input CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:H) yields a base score of 8.2 (High), driven by an unauthenticated, network-reachable endpoint that exposes high-impact confidentiality loss (arbitrary file read) with no integrity or availability impact (VI:N/VA:N). Crucially, the vector sets AT:P (attack requirements present), which aligns with the description: the server binds to localhost by default, so remote exploitation is only possible where an operator has intentionally exposed it via the host option or DBT_DOCS_HOST - this is the single most important risk-dampening factor and explains why the score is not higher despite PR:N/UI:N. No EPSS score, KEV listing, or POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; exploitation probability cannot be quantified from the data given. The affected range is confined to pre-release alpha builds (2.0.0-alpha.0 through alpha.4), which sharply narrows the real-world exploitable population. Net assessment: a genuinely serious confidentiality flaw for the specific subset of deployments that network-expose dbt docs serve, but low blast radius overall given the default-localhost binding and the alpha-only version window - treat as a priority only where the host/DBT_DOCS_HOST exposure is in use. No contradictory signals beyond the AV:N-vs-AT:P nuance, which the vector itself already reconciles. |
| Exploit ScenarioDerived | An attacker who can reach a dbt docs server that an operator has bound to a network interface (via the host option or DBT_DOCS_HOST) sends an unauthenticated POST to /api/v1/query containing SQL that invokes DuckDB filesystem-reading functions to read files accessible to the dbt process - for example profiles.yml, credential files, or other secrets outside the docs index directory - and receives the file contents in the JSON response. Because AV:N/AC:L/PR:N/UI:N applies once the server is reachable, exploitation requires only a single crafted HTTP request with no authentication or user interaction. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Unauthenticated arbitrary file read in the dbt docs serve component (dbt 2.0.0-alpha.0 through 2.0.0-alpha.4) lets any client that can reach the server POST attacker-chosen SQL to /api/v1/query and invoke DuckDB filesystem-reading functions, returning the contents of files readable by the dbt process - including paths outside the docs index directory. The SQL handler was removed entirely in 2.0.0-alpha.5. Reachability is the gating prerequisite: dbt docs serve binds to localhost by default, so remote exploitation only succeeds when an operator has exposed it via the host option or the DBT_DOCS_HOST environment variable; no public exploit code was identified at time of analysis, and no KEV listing is associated with this issue. The vector is unauthenticated (PR:N) with high confidentiality impact only (VI:N, VA:N), giving a 4.0 base score of 8.2 and an assessed 3.1 score of AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N.
RemediationAI
Vendor-released patch: upgrade to dbt 2.0.0-alpha.5, which deletes the POST /api/v1/query handler and its module registration (commit 3a5d26fe02b58382720d04cbd87143b7b6775413; advisory GHSA-h2j2-2r7g-rff8). Because the fix removes the endpoint outright rather than filtering it, there is no partial-upgrade path - any code or workflow depending on the ad-hoc query API must be retired. If an immediate upgrade is not possible, the highest-value compensating control is to undo the network exposure: ensure dbt docs serve retains its default loopback binding and do not set the host option or DBT_DOCS_HOST to a routable address, which restores the AT:P precondition and reduces the issue to local-only reach. Where remote access to docs is genuinely required, front the server with a reverse proxy or firewall rule that rejects POST /api/v1/query (and ideally all non-GET methods) before it reaches the process - the trade-off is that the docs UI's interactive SQL editor and autocomplete-driven table browsing stop working, and operators must remember the rule is bypassed by any direct-to-host network path. Finally, run the docs server under a dedicated low-privilege account with a working directory that contains no secrets (no .env, cloud credential files, SSH keys, or warehouse profiles), since the vulnerability grants read access at the dbt process's filesystem permission level; this limits blast radius but does not stop disclosure of project data under that path.
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
dbt's documentation server (crates/dbt-docs-server) is a Rust/Axum HTTP service that backs the interactive docs site. In the affected pre-release builds it registered an ad-hoc query endpoint at POST /api/v1/query implemented in crates/dbt-docs-server/src/handlers/query.rs. That handler accepted a JSON body containing a raw SQL string, trimmed it, and passed it unchanged to DuckDbViewsBackend::query_arrow() in crates/dbt-index-core/src/backend.rs, which executed it synchronously against DuckDB views registered over the project's read-only parquet artifacts. The code comment in the handler explicitly assumed 'SQL injection risk is bounded to can read other parquet views this user already has access to' - an assumption that fails because DuckDB exposes table functions such as its file-scanning readers, which the engine executes with the filesystem permissions of the dbt process rather than being restricted to the registered views. There was no authentication, no session check, and no SQL allowlist or statement parser in front of the backend. The CWE-22 (path traversal) classification captures the outcome: caller-supplied SQL effectively reaches paths outside the intended docs index directory, yielding local file disclosure. The upstream fix commit 3a5d26fe02b58382720d04cbd87143b7b6775413 removes the handler module and its declaration from handlers/mod.rs rather than adding an allowlist, i.e. the attack surface was deleted.
Know when the next one hits your stack
- 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:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Endpoint is unauthenticated (PR:N) but network-reachable only when the operator overrides the default localhost binding, so AC:H; file read gives C:H with no integrity or availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. From 2.0.0-alpha.0 until 2.0.0-alpha.5, dbt docs serve exposes the unauthenticated POST /api/v1/query endpoint in crates/dbt-docs-server/src/handlers/query.rs, which passes caller-supplied SQL to DuckDbViewsBackend::query_arrow() in crates/dbt-index-core/src/backend.rs without authorization or an allowlist. A client that can reach the server can invoke DuckDB filesystem-reading functions to read files available to the dbt process, including files outside the docs index directory. The server binds to localhost by default, but operators can expose it to a network through the host option or DBT_DOCS_HOST setting. This issue is fixed in version 2.0.0-alpha.5.
Executive ViewAI
dbt 2.0.0-alpha.0 through 2.0.0-alpha.4 deployments that expose the docs serve component beyond localhost are exposed to unauthenticated arbitrary file reads, potentially disclosing sensitive files readable by the dbt process. Because the vulnerable SQL handler was removed in 2.0.0-alpha.5 and no vendor-released patch identified at time of analysis for affected alpha releases, leadership should prioritize locating and isolating any externally reachable docs servers, especially in analytics engineering and data platform environments. No public exploit identified at time of analysis, but the confidentiality impact is high when the service is reachable.
No vendor-released patch identified at time of analysis; interim mitigations include binding dbt docs serve to localhost only, removing --host or DBT_DOCS_HOST exposure, blocking external network access to the docs port, running the dbt process with least privilege, restricting file permissions for files readable by dbt, monitoring for POST requests to /api/v1/query, and upgrading to dbt 2.0.0-alpha.5 or later where the SQL handler was removed.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
EUVD-2026-101600
NVD
CVE.org
EPSS
GitHub
Exploit-DB