🇰🇷 한글 설명
Lightdash 0.3213.0 이하 버전에서 dbt Cloud 웹훅 엔드포인트가 인증 없이 동작하며, accountId와 runId 값이 검증되지 않은 채 dbt Cloud API URL에 삽입되어 경로 탐색이 가능합니다. 이로 인해 공격자가 인증되지 않은 상태에서 프리뷰 생성을 유발할 수 있으며, 서버 측 요청이 프로젝트 API 키를 포함한 채 공격자가 영향을 줄 수 있는 경로로 전송될 수 있습니다. 0.3214.0 버전에서 경로 탐색은 수정되었으나 웹훅 시크릿이 설정되지 않은 경우 서명 없는 요청은 여전히 처리됩니다.
💡 쉬운 설명
외부에서 누구나 Lightdash의 특정 웹훅 주소로 조작된 요청을 보낼 수 있는 취약점입니다. 공격자가 프로젝트 고유 ID를 알고 있다면 서버가 대신 요청을 보내도록 만들어 프로젝트 인증 정보가 노출될 위험이 있습니다.
🇺🇸 원문 (English)
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.
📍 영향받는 시스템
Lightdash 0.3213.0 이하 버전 (dbt Cloud IDE 프로젝트 연동 환경)
⚔️ 공격 벡터
프로젝트 UUID를 알아낸 공격자가 인증 없이 조작된 accountId/runId를 담은 job.run.completed 웹훅 요청을 전송하여 경로 탐색 및 프리뷰 생성을 유발
🛡️ 대응 방법
Lightdash 0.3214.0 이상으로 업그레이드하고 dbt Cloud 웹훅에 반드시 HMAC 시크릿을 설정하여 서명 검증을 활성화
🔧 검증 코드
출력된 버전이 0.3214.0 미만이면 취약, 0.3214.0 이상이면 패치 적용됨 (package.json 버전 필드 기준으로 확인)
docker exec $(docker ps -qf ancestor=lightdash/lightdash) sh -c 'cat /usr/src/app/packages/backend/package.json 2>/dev/null | grep -E "\"version\""' 2>/dev/null || echo 'Lightdash 컨테이너를 찾을 수 없음'
💻 영향받는 소프트웨어
VMware Telco Cloud Platform