🇰🇷 한글 설명
Kubeflow Pipelines 2.18.0 이전 버전에서 레거시 V1/raw-Argo 실행 캐시 웹훅과 캐시 서버가 Kubernetes 네임스페이스 없이 캐시 키만으로 조회 및 중복 검사를 수행하며, 변경 가능한 execution_cache_key 어노테이션을 신뢰합니다. 캐시 서비스를 공유하는 다중 테넌트 환경에서 워크로드 제출 권한을 가진 테넌트가 다른 네임스페이스의 캐시된 출력을 읽거나 조작할 수 있습니다. 2.18.0 버전에서 수정되었습니다.
💡 쉬운 설명
여러 팀이 같은 머신러닝 파이프라인 시스템을 함께 쓰는 환경에서, 한 팀이 다른 팀의 작업 결과를 훔쳐보거나 조작할 수 있는 문제입니다. 표준 KFP V2 컴포넌트에는 영향이 없고 특정 조건에서만 발생합니다.
🇺🇸 원문 (English)
Kubeflow Pipelines enables users to build and deploy portable, scalable machine learning workflows. Prior to 2.18.0, the legacy V1/raw-Argo execution cache mutating webhook and cache-server storage path hash selected template fields without the Kubernetes namespace, use the key alone for lookups and duplicate checks, and trust the mutable pipelines.kubeflow.org/execution_cache_key annotation when publishing outputs. In multi-user deployments where tenant namespaces share the cache service, a tenant with workload-submission privileges can read another namespace's cached outputs or seed matching outputs that are substituted into a later step. Standard KFP V2 component pods bypass this cache, matching requires the selected template fields and staleness policy, and arbitrary code execution or service availability impact is not established. This issue is fixed in version 2.18.0.
📍 영향받는 시스템
Kubeflow Pipelines 2.18.0 미만 버전 (레거시 V1/raw-Argo 실행 캐시 사용 환경)
⚔️ 공격 벡터
워크로드 제출 권한을 가진 인증된 테넌트가 캐시 키 어노테이션을 조작해 다른 네임스페이스의 캐시 출력을 읽거나 위조된 출력을 주입
🛡️ 대응 방법
Kubeflow Pipelines를 2.18.0 이상으로 업그레이드하고, 다중 테넌트 환경에서는 네임스페이스 격리 설정을 점검
🔧 검증 코드
출력된 Kubeflow 관련 이미지 태그를 확인해 버전이 2.18.0 미만이면 취약하고, 2.18.0 이상이면 수정된 버전입니다. 결과가 없으면 Kubeflow Pipelines가 설치되지 않은 것입니다.
kubectl get deployment -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.spec.template.spec.containers[*].image}{"\n"}{end}' 2>/dev/null | grep -i kubeflow