CVE-2026-61576: Lightdash: Unauthenticated dbt Cloud webhook with path injection leaks API key
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.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 0.3214.0
Event History
Frequently Asked Questions
Which projects are exposed?
The affected endpoint applies to dbt Cloud IDE projects running affected Lightdash versions through 0.3213.0. The attacker must know the target project's projectUuid.
Does an attacker need credentials or user interaction?
No authentication middleware or webhook signature validation is present on the endpoint. An attacker can send a crafted job.run.completed request without credentials or user interaction, provided they know the projectUuid.
Is API-key theft confirmed?
No. The request can be redirected to an attacker-influenced path on cloud.getdbt.com while carrying the project's API key in the Authorization header, but the supplied evidence does not show that an attacker can observe that header.
What impact is confirmed even if the API key cannot be observed?
The unauthenticated webhook allows preview creation. Path traversal through the accountId value can also alter the dbt Cloud API path requested by the server.