Skip to main content

dbt docs server CVE-2026-100406

| EUVDEUVD-2026-101600 HIGH
Path Traversal (CWE-22)
2026-10-14 security-advisories@github.com
8.2
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach network-exposed docs server
  2. Exploit
    POST crafted SQL to /api/v1/query
  3. Execution
    DuckDB executes filesystem-read function
  4. Impact
    Exfiltrate 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 dbt docs serve instance on an affected pre-release version (2.0.0-alpha.0 through 2.0.0-alpha.4), and (2) network reachability of that instance - which is NOT the default, since the server binds to localhost unless the operator sets the host option or the DBT_DOCS_HOST environment variable to a non-loopback address. When both hold, the POST /api/v1/query endpoint accepts attacker-supplied SQL with no authorization and no allowlist, allowing invocation of DuckDB filesystem-reading functions limited only by the filesystem permissions of the dbt process. The primary limiting factor is the default localhost binding (captured as AT:P): on an unmodified deployment, exploitation is local-only and remote attack requires an explicit operator misconfiguration/exposure. No user interaction or authentication is required once the endpoint is reachable.

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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

dbt-core 2.0.0-alpha.0, < 2.0.0-alpha.5

Affected Packages

euvd dbt_core fix: 2.0.0-alpha.5

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

Vendor (github) PRIMARY 8.2 HIGH
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
vuln.today AI 5.9 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 14, 2026 - 20:34 EUVD
CVE Published
Oct 14, 2026 - 19:16 cve.org
HIGH 8.2

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Low
pre-release alpha builds only, minimal production footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy