Kubeflow Pipelines'ta CVSS 9.6'lık açık, herhangi bir tenant'ın paylaşılan pipeline'lara kendi imajını sokmasına izin veriyor
Kubeflow Pipelines API sunucusunun yükleme uç noktaları, multi-user mode'da namespace boş bırakıldığında yetki kontrolünü tamamen atlıyor (CVE-2026-77596). Düzeltme 2.18.0 sürümünde; çok kiracılı ML platformu işletenler sürümü kontrol etmeli.
CVE-2026-77596Makine öğrenmesi iş akışlarını Kubernetes üzerinde çalıştırmak için yaygın kullanılan Kubeflow Pipelines (KFP), API sunucusundaki kritik bir yetkilendirme açığını kapattı. GitHub'da 9 Kasım'da yayımlanan bildirime göre CVE-2026-77596 (CVSS 9.6), multi-user mode'da pipeline yükleme uç noktalarının hedef namespace boş olduğunda hiçbir yetki kontrolü yapmamasından kaynaklanıyor. KFP'de boş namespace, tüm cluster'ın ortak kullandığı paylaşılan pipeline'ları ifade ediyor ve çağrıda namespace verilmediğinde varsayılan değer de bu.
Sonuç olarak düşük yetkili herhangi bir tenant, API sunucusuna doğrudan erişilebiliyorsa kimliği doğrulanmamış biri bile paylaşılan yeni pipeline'lar oluşturabiliyor. Daha kötüsü, mevcut paylaşılan pipeline'lara yeni sürüm ekleyip diğer ekiplerin çalıştırdığı container imajını, komutu ve argümanları değiştirebiliyor. Bu da çok kiracılı bir ML platformunda başka ekiplerin iş yükleri üzerinden kod çalıştırma anlamına geliyor. Bildirime göre aynı işlemin gRPC karşılığı yetki kontrolü yapıyor; yani açık, bilinçli bir tasarım değil bir eksiklik. Açık CISA KEV kataloğunda yok ve aktif istismar bildirimi yok.
Etkilenen ve düzeltilmiş sürümler
| Ürün | Etkilenen | Düzeltilmiş sürüm |
|---|---|---|
| Kubeflow Pipelines (multi-user mode) | 2.18.0 öncesi sürümler | 2.18.0 |
Düzeltme 62516d8c525f commit'iyle geldi ve bildirim 2.18.0 sürümüne işaret ediyor. Tek kullanıcılı (standalone) kurulumlarda bu fonksiyon zaten yetki kontrolü yapmadığı için açığın etkisi multi-user mode ile sınırlı.
Beni etkiliyor mu?
KFP API sunucusunun imaj etiketinden sürümü, ortam değişkenlerinden de multi-user mode ve namespace zorunluluğu ayarını görebilirsiniz:
kubectl get deploy -n kubeflow ml-pipeline -o jsonpath="{.spec.template.spec.containers[*].image}"
kubectl get deploy -n kubeflow ml-pipeline -o yaml | grep -iE "MULTIUSER|REQUIRE_NAMESPACE"Bildirime göre REQUIRE_NAMESPACE_FOR_PIPELINES varsayılan olarak false ve dağıtılan hiçbir manifest'te ayarlanmamış. Paylaşılan pipeline'ların son sürüm geçmişini KFP arayüzünde Pipelines menüsünden inceleyebilirsiniz.
Ne yapılmalı?
- Kubeflow Pipelines'ı 2.18.0 veya üzerine yükseltin. Kubeflow platform dağıtımı kullanıyorsanız dağıtımın hangi KFP sürümünü içerdiğini kontrol edin.
- Yükseltme hemen mümkün değilse geçici önlem olarak paylaşılan pipeline'lara namespace zorunluluğu getirmeyi ve API sunucusunun yalnızca kimlik doğrulama katmanı (Istio/oauth2-proxy) arkasından erişilebilir olduğunu doğrulamayı değerlendirin. Bu ayar değişikliğini change management sürecinizle yapın.
- Paylaşılan pipeline'lara son dönemde eklenen sürümleri, beklenmeyen container imajı ya da komut değişikliği açısından gözden geçirin.
- API sunucusu loglarında
/apis/v2beta1/pipelines/uploadveupload_versionçağrılarını, özellikle namespace parametresi olmayanları izleyin.