Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDiscover target projectUuid in shared/multi-tenant context
-
DeliverySend unauthenticated dbt-cloud webhook (job.run.completed)
-
ExploitInject path traversal via accountId
-
ExecutionRedirect credential-bearing request to attacker path on cloud.getdbt.com
-
ImpactTrigger unauthorized preview creation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the Lightdash project be configured as a 'dbt Cloud IDE' project and that the attacker know its projectUuid, which is not enumerable but can be obtained in shared or multi-tenant contexts. No authentication is required (PR:N): in affected versions through 0.3213.0 the dbt Cloud webhook endpoint has no auth middleware and no signature validation, so a crafted job.run.completed POST is accepted outright. Limiting factors: knowledge of the non-enumerable UUID, the dbt-Cloud-IDE project-type requirement, and that even after 0.3214.0 HMAC signatures are verified ONLY when a webhook secret is configured - without a secret, unsigned webhooks continue to be processed. |
| Impact | Signals are mixed and point to a real but conditional issue rather than a mass-exploitation emergency. The CVSS 4.0 base score of 8.3 (AV:N/AC:L/AT:P/PR:N/UI:N) reflects an unauthenticated, network-reachable webhook (POST /api/v1/projects/{projectUuid}/dbt-cloud/webhook) with no auth middleware or signature validation, which is genuinely attractive. However, AT:P and the description both encode a real limiter: the target must be a 'dbt Cloud IDE' project and the attacker must know the project's projectUuid, which is not enumerable (only discoverable in shared/multi-tenant contexts). The vuln.today decision label is 'this_week', not act_now/emergency. No CISA KEV entry and no EPSS score are provided, so there is no evidence of active exploitation or a quantified exploitation probability. A detailed public PoC reference exists in the attached advisory, but it describes a SQL-injection vector (see confidence_notes), not the webhook path-traversal flaw this CVE text and the PR fix actually address; it is not verified as working exploit code for this flaw. CONFLICT: the input CVSS 4.0 assigns VC:H (high confidentiality impact tied to API-key theft), yet the description explicitly states the supplied evidence does NOT establish that the attacker can observe the Authorization header - so the headline confidentiality impact is unproven and may be overstated. Net: a legitimate 'patch this week' issue, most dangerous in shared/multi-tenant Lightdash deployments, but not a confirmed-exploited, internet-wide crisis. |
| Exploit ScenarioDerived | In a shared or multi-tenant Lightdash deployment, an attacker who has learned a dbt Cloud IDE project's projectUuid sends an unauthenticated job.run.completed webhook whose accountId contains path-traversal sequences. Lightdash interpolates the unsanitized value into the server-side dbt Cloud API URL and issues the request with the victim project's API key in the Authorization header to an attacker-influenced path on the fixed host cloud.getdbt.com, and can also trigger unauthorized preview creation. A public PoC reference exists in the advisory, though it demonstrates a separate SQL-injection vector rather than this webhook flaw. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 29, 2026
Lightdash versions through 0.3213.0 expose the dbt Cloud webhook endpoint (POST /api/v1/projects/{projectUuid}/dbt-cloud/webhook) without authentication middleware or signature validation, so unauthenticated remote requests are accepted outright; an attacker who knows a project's UUID and whose target is configured as a dbt Cloud IDE project can inject path-traversal sequences into the accountId value, which is interpolated into the server-side dbt Cloud API URL that is then requested with the victim project's API key in the Authorization header, and can also force creation of preview environments. The vendor advisory frames the outcome as dbt Cloud API-key theft, but the supplied evidence does not establish that an attacker can observe the Authorization header of the outbound request, so confidentiality impact is assessed as limited while integrity impact comes from unauthorized preview creation. Version 0.3214.0 adds numeric validation of accountId/runId and HMAC verification of webhook signatures, but signatures are checked only when a webhook secret is configured - deployments without a secret continue to process unsigned webhooks. No public exploit identified at time of analysis.
RemediationAI
Upgrade Lightdash to 0.3214.0 or later, which validates accountId and runId as positive integers, captures the raw webhook body, and verifies the dbt Cloud HMAC signature (release notes at https://github.com/lightdash/lightdash/releases/tag/0.3214.0, fix in https://github.com/lightdash/lightdash/pull/24587); because deployments below 0.3219.1 are also exposed to the separate attribute-substitution SQL injection, upgrading to 0.3219.1 or later is preferable where feasible. Crucially, 0.3214.0 verifies signatures only when a webhook secret is configured - set the dbt Cloud webhook secret for every dbt Cloud IDE project, otherwise unsigned job.run.completed payloads are still processed. As a compensating control, restrict inbound access to /api/v1/projects/*/dbt-cloud/webhook at the reverse proxy or load balancer to dbt Cloud's published egress ranges; the trade-off is that legitimate webhook deliveries break if those ranges change or if the deployment relies on user-supplied proxies. Rotate the dbt Cloud API key for any project whose webhook endpoint was reachable from untrusted networks, and audit recent preview environments for creations not initiated by dbt Cloud runs, since the unauthenticated endpoint also permits preview creation. There is no way to disable the endpoint's unauthenticated behaviour short of patching, so exposure reduction depends on network filtering or upgrading.
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
Lightdash is a Node/Express business-intelligence backend (packages/backend). In affected releases the dbt Cloud webhook handler in packages/backend/src/controllers/projectController.ts (testWebhook()) trusts the JSON body of a job.run.completed event, reading accountId and runId and passing them to createPreviewWithExplores() in packages/backend/src/services/ProjectService/ProjectService.ts, which interpolates the unsanitized values into a server-side dbt Cloud API URL on the fixed host cloud.getdbt.com and issues that request with the victim project's API key in the Authorization header. Because only the path component is attacker-influenced and the host is fixed, the primitive is path traversal on a trusted destination rather than free-form SSRF; whether the response - and therefore the credential-bearing request's behaviour - is observable to the attacker is not established by the available sources. The CVE record carries CWE-89, which does not match the described mechanism; the weakness is better characterised as missing authentication on a webhook endpoint (CWE-306) combined with path traversal / unsafe interpolation of identifiers (CWE-22). Fix PR 24587 captures the raw request body via an express.json verify hook in App.ts, enforces /^\d+$/ on accountId and runId (throwing ParameterError otherwise), and routes processing through createPreviewFromDbtCloudWebhook() with HMAC verification that rejects invalid signatures with ForbiddenError while logging other failures. Note that the GitHub advisory referenced in the CVE record (GHSA-r4xc-vwqr-3252) actually documents a separate Lightdash flaw - unescaped substitution of user-attribute and embed-JWT intrinsic values into compiled warehouse SQL, causing row-level-security bypass and cross-tenant exfiltration - patched in 0.3219.1; that is a distinct issue from the webhook defect fixed in 0.3214.0, and operators running anything below 0.3219.1 are exposed to both.
Know when Lightdash 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:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
Unauthenticated network webhook (PR:N) but needs a non-enumerable projectUuid and a dbt Cloud IDE project (AC:H); confidentiality only Low since evidence does not establish Authorization-header/API-key theft.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Lightdash is an open source business intelligence platform. In affected versions through 0.3213.0, the dbt Cloud webhook POST /api/v1/projects/{projectUuid}/dbt-cloud/webhook has no authentication middleware or signature validation. In packages/backend/src/controllers/projectController.ts, testWebhook() accepts accountId and runId from a job.run.completed request and passes them to createPreviewWithExplores() in packages/backend/src/services/ProjectService/ProjectService.ts. These unsanitized values are interpolated into the server-side dbt Cloud API URL, which is requested with the victim project's API key in the Authorization header. Path traversal through accountId changes the requested path on cloud.getdbt.com without changing its host, so the credential-bearing request reaches an attacker-influenced path on that fixed host. The advisory claims API-key theft, but the supplied evidence does not establish that the attacker can observe the Authorization header. The unauthenticated webhook also allows preview creation. The target must be a dbt Cloud IDE project and the attacker must know its projectUuid; the UUID is not enumerable but can be discovered in shared or multi-tenant contexts. Version 0.3214.0 fixes identifier path traversal and verifies webhook HMAC signatures only when a secret is configured; without a secret, unsigned webhooks continue to be processed.
Technical POC Analysis
Correction to the brief: the supplied evidence (GHSA-r4xc-vwqr-3252) describes CVE-2026-61654 as a CWE-89 SQL injection in Lightdash's query compiler, not a dbt Cloud webhook path traversal.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-61654 in Lightdash (through 0.3213.0) exposes an unauthenticated webhook endpoint that allows attackers who know a project UUID to trigger server-side requests with the project's dbt Cloud API key and create unauthorized preview environments. This threatens the integrity of your analytics environment and could disrupt business intelligence operations, though data confidentiality is assessed as limited because header theft is not established. Leadership should prioritize patching and reducing exposure of project UUIDs.
No vendor-released patch identified at time of analysis; interim mitigations include restricting access to the webhook endpoint via network controls, implementing input validation or WAF rules to block path traversal in accountId, and monitoring for unauthorized preview environment creation.
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.
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
packages/backend/src/routers in Lightdash before 0.510.3 has insecure file endpoints, e.g., they allow .. Rated high sev
Authorization bypass in Lightdash through 2.556.0 allows any authenticated organization member to delete another user's
Lightdash 0.2609.0 through 3.136.x contains a cross-project insecure direct object reference in RenameService that lets
EUVD-2026-113396
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB