🇰🇷 한글 설명
zenml-io/zenml 0.94.2 버전의 GET /api/v1/stack-deployment/stack 엔드포인트(get_deployed_stack)에 적절한 RBAC 권한 검증이 없어, 인증된 모든 사용자가 모든 사용자 및 테넌트의 배포된 스택 정보를 열거할 수 있습니다. 엔드포인트 수준 RBAC 검사 누락과 SqlZenStore를 통해 DB에 직접 접근하는 서버 측 Client()가 RBAC 계층을 우회하는 것이 원인입니다. 이로 인해 멀티테넌트 ZenML Pro/Cloud 환경에서 인프라 구조, 서비스 커넥터 정보, 스택 소유자 ID 등이 노출될 수 있습니다.
💡 쉬운 설명
로그인한 사용자라면 권한이 없어도 다른 사용자와 고객사의 배포 설정 정보를 조회할 수 있는 문제입니다. 이를 통해 내부 인프라 구조와 소유자 정보가 노출되어 추가 공격의 발판이 될 수 있습니다.
🇺🇸 원문 (English)
In zenml-io/zenml version 0.94.2, the `GET /api/v1/stack-deployment/stack` endpoint (`get_deployed_stack`) lacks proper RBAC authorization checks, allowing any authenticated user to enumerate all deployed stacks across all users and tenants. This includes stack component details, service connector information, and user IDs of stack owners. The vulnerability arises from two issues: missing endpoint-level RBAC checks and the use of a server-side `Client()` that bypasses the RBAC enforcement layer by directly accessing the database through `SqlZenStore`. This exposes sensitive information such as infrastructure topology, service connector details, stack ownership, and deployment metadata, potentially enabling cross-tenant reconnaissance and further attacks in multi-tenant ZenML Pro/Cloud deployments.
📍 영향받는 시스템
zenml-io/zenml 0.94.2 (ZenML Pro/Cloud 멀티테넌트 배포 포함)
⚔️ 공격 벡터
유효한 인증 토큰으로 GET /api/v1/stack-deployment/stack 요청을 보내 모든 테넌트의 배포 스택 정보를 열거
🛡️ 대응 방법
해당 엔드포인트에 RBAC 권한 검사를 추가하고 서버 측에서 Client() 대신 권한 검증 계층을 거치도록 수정한 최신 버전으로 업그레이드
🔧 검증 코드
출력된 버전이 0.94.2이면 취약하며, 0.94.2보다 높은 패치 버전이면 수정된 것으로 판단합니다.
pip show zenml 2>/dev/null | grep -i '^version'
📊 CVSS Vector String
CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
💻 영향받는 소프트웨어
Cisco Secure Endpoint Connector