🇰🇷 한글 설명
Kubeflow Pipelines 0.5.1부터 2.17.0 이전까지 프론트엔드 아티팩트 라우트가 인증된 사용자의 요청 네임스페이스 접근 권한을 확인하지 않습니다. 인증된 사용자가 다른 테넌트의 네임스페이스를 지정하거나 네임스페이스를 생략해 보호되지 않은 직접 핸들러에 접근하여 데이터셋, 모델, 파이프라인 출력물 등 아티팩트 내용을 읽을 수 있습니다. 이 문제는 테넌트 격리를 위해 Kubeflow Pipelines 권한 부여에 의존하는 다중 사용자 배포 환경에 영향을 미치며, 2.17.0에서 수정되었습니다.
💡 쉬운 설명
로그인한 사용자가 자신에게 허용되지 않은 다른 팀의 머신러닝 데이터와 모델 결과물을 훔쳐볼 수 있는 취약점입니다. 출입 확인은 되지만 해당 자료실에 들어갈 권한은 확인하지 않는 상황과 비슷합니다.
🇺🇸 원문 (English)
Kubeflow Pipelines enables users to build and deploy portable, scalable machine learning workflows. From 0.5.1 until 2.17.0, the frontend artifact routes did not check whether an authenticated user was authorized to access the requested namespace. A user who can reach the frontend and knows an artifact location can select another tenant's namespace, or omit the namespace and reach an unguarded direct handler, to read artifact contents such as datasets, models, or pipeline outputs. The issue applies to multi-user deployments that rely on Kubeflow Pipelines authorization for tenant isolation. Authentication at ingress identifies the caller but does not authorize access to the selected artifact namespace. The issue does not establish arbitrary Kubernetes Secret disclosure, storage modification, or server-side code execution. This issue is fixed in version 2.17.0.
📍 영향받는 시스템
Kubeflow Pipelines 0.5.1 이상 2.17.0 미만, 다중 사용자(멀티테넌트) 배포 환경
⚔️ 공격 벡터
프론트엔드에 접근 가능한 인증된 사용자가 아티팩트 위치를 알고 다른 테넌트의 네임스페이스를 지정하거나 네임스페이스를 생략해 아티팩트 내용을 읽음
🛡️ 대응 방법
Kubeflow Pipelines를 2.17.0 이상으로 업그레이드하고, 그 전까지는 프론트엔드 접근을 제한하며 네임스페이스별 접근 권한을 점검
🔧 검증 코드
출력된 이미지 태그에서 ml-pipeline 또는 frontend 이미지 버전이 2.17.0 미만이면 취약하고, 2.17.0 이상이면 수정된 버전입니다. 결과가 없으면 Kubeflow Pipelines가 설치되어 있지 않은 것입니다.
kubectl get deployment -A -o jsonpath='{range .items[*]}{.metadata.namespace}{" "}{.metadata.name}{" "}{.spec.template.spec.containers[*].image}{"\n"}{end}' 2>/dev/null | grep -i 'kubeflow\|ml-pipeline'