SAPwned: SAP AI güvenlik açıkları müşteri bulut ortamlarını ve özel AI çıktılarını açığa çıkardı
(wiz.io)- Wiz Research, SAP AI Core’daki kiracı izolasyonu güvenlik açığı zinciri aracılığıyla, normal bir AI eğitim işinde başlayan kod çalıştırmanın hizmetin ele geçirilmesine ve müşteri sırlarına erişime yol açabileceğini doğruladı
- Saldırı yolu; Istio ağ kısıtlamalarının atlatılması, Loki yapılandırmasında AWS token’ının açığa çıkması, kimlik doğrulamasız EFS paylaşımı ve kimlik doğrulamasız Helm v2 Tiller erişiminin zincirleme biçimde birleştiği bir yapıdaydı
- Elde edilen yetkilerle SAP’nin dahili Docker Registry’sindeki, Google Container Registry’deki ve dahili Artifactory’deki imajlar ile artefaktlar okunup değiştirilebiliyordu; ayrıca Kubernetes kümesinde cluster-admin yetkisi de elde edilebiliyordu
- Potansiyel bir saldırgan müşterilerin AWS, Azure ve SAP HANA Cloud kimlik bilgilerine ve modeller, veri kümeleri, kod gibi özel AI çıktılarına erişebilir ya da dahili artefaktları kirletebilirdi
- SAP bildirilen tüm güvenlik açıklarını düzeltti ve ilgili gizli değerleri döndürdü; Wiz ise müşteri verilerinin ihlal edilmediğini belirtti
SAP AI Core’da ortaya çıkan kiracı izolasyonu sorunu
- Wiz Research, AI hizmet sağlayıcılarının kiracı izolasyonunu araştırıyordu; SAP AI Core, Hugging Face ve Replicate’in ardından üçüncü rapor oldu
- SAP AI Core, kullanıcıların SAP’nin bulut kaynakları üzerinde AI hizmetleri geliştirmesine, eğitmesine ve çalıştırmasına olanak tanıyan yönetilen bir hizmettir
- AI eğitim hizmetleri büyük miktarda hassas müşteri verisine erişmek zorundadır; SAP AI Core, HANA ve diğer bulut hizmetleriyle entegrasyon için müşterinin dahili verilerine erişen bulut erişim anahtarları kullanır
- Araştırma, temel yetkilere sahip bir SAP müşteri hesabında bir AI projesi oluşturup SAP AI Core’un izin verdiği Argo Workflow dosyasıyla Kubernetes Pod’u oluşturma yöntemiyle başladı
- Kullanıcılar tasarım gereği Pod içinde rastgele kod çalıştırabiliyordu, ancak başlangıç ortamında Istio proxy sidecar’ı ağ erişimini kısıtladığı için dahili ağ taraması zordu
Hata #1: Istio kısıtlamalarının atlatılması
- SAP’nin admission controller’ı tehlikeli güvenlik seçeneklerini engelliyordu; konteyneri
rootolarak çalıştırma girişimleri de engellendi - Engellenmeyen iki ayar ağ kısıtlamalarının atlatılmasına yol açtı
shareProcessNamespace, sidecar konteyneriyle işlem ad alanını paylaşmayı sağlayarak Istio proxy yapılandırmasını ve merkezi Istiod sunucusuna erişim token’ını görmeyi mümkün kıldırunAsUserverunAsGroup,rootdışındaki UID’lere izin veriyordu ve Istio’nun UID’si olan1337ile çalıştırmak mümkündü
- Istio’nun kendisi Istio iptables kurallarından hariç tutulduğu için, UID
1337ile çalışan süreçler trafik kısıtlaması olmadan çalışır - Ardından Istio token’ıyla Istiod sunucusunun yapılandırması okunarak dahili ortam bilgileri elde edilebildi
Hata #2: Loki yapılandırmasında AWS token’ının açığa çıkması
- Küme içinde bir Grafana Loki örneği bulundu ve
/configendpoint’ine yapılan istekle tüm yapılandırma görülebildi - Yanıtta Loki’nin S3 erişimi için kullandığı AWS gizli değerleri yer alıyordu
- Bu gizli değerler Loki’nin S3 bucket’ına erişim yetkisi sağlıyordu; ilgili bucket’ta çok sayıda AI Core hizmet günlüğü ve müşteri Pod günlüğü bulunuyordu
- SAP bu günlüklerin hassas olmadığını değerlendirdi
Hata #3: Kimlik doğrulamasız EFS paylaşımında kullanıcı dosyalarının açığa çıkması
- Dahili ağda
2049portunu dinleyen 6 AWS Elastic File System, yani EFS örneği bulundu - Bu EFS örnekleri, yalnızca ağ erişimi mümkün olduğunda kimlik bilgisi olmadan dosyaların görüntülenip düzenlenebileceği durumdaydı
- Yalnızca açık kaynak NFS araçlarıyla paylaşımların içeriğine serbestçe erişilebildi
- EFS üzerinde müşteri kimliklerine göre sınıflandırılmış kodlar ve eğitim veri kümeleri dahil büyük miktarda AI verisi saklanıyordu
Hata #4: Kimlik doğrulamasız Helm Tiller, dahili Registry ve Artifactory’yi açığa çıkardı
- Dahili ağda Helm v2’nin sunucu bileşeni olan Tiller hizmeti bulundu
- Tiller,
44134portundaki gRPC arayüzü üzerinden iletişim kurar ve varsayılan olarak kimlik doğrulaması olmadan açığa çıkar - Tiller sorgusu sonucunda SAP Docker Registry ve Artifactory sunucularına yönelik yüksek yetkili gizli değerler açığa çıktı
- Okuma yetkisiyle dahili imajlar ve build’ler okunarak ticari sırlar ve müşteri verileri çıkarılabiliyordu
- Yazma yetkisiyle imajlar ve build’ler kirletilerek SAP AI Core hizmetine yönelik bir tedarik zinciri saldırısı gerçekleştirilebiliyordu
Hata #5: Helm Tiller yazma yetkisiyle Kubernetes kümesinin ele geçirilmesi
- Tiller yalnızca okuma değil, yazma işlemlerine de izin veriyordu
installkomutu Helm paketlerini alıp Kubernetes kümesine dağıttığından, araştırma ekibicluster-adminyetkisine sahip yeni bir Pod oluşturan kötü amaçlı bir Helm paketi hazırlayıp kurdu- Bu süreçle küme üzerinde tam yetki elde edildi
- Bu yetki, diğer müşterilerin Pod’larına doğrudan erişip model, veri kümesi ve kod gibi hassas verileri çalabilecek düzeydeydi
- Ayrıca müşteri Pod’larını engellemek, AI verilerini kirletmek ve model çıkarımını manipüle etmek mümkündü
- Aynı yetkiyle SAP AI Core kapsamının ötesindeki müşteri gizli değerleri de düz metin olarak sorgulanabiliyordu
- Araştırma ekibinin AI Core hesabında S3 veri erişimi için AWS hesap gizli değerleri vardı
- Data Lake erişimi için SAP HANA hesap gizli değerleri vardı
- İmaj pull işlemi için Docker Hub hesap gizli değerleri vardı
- Aynı sorguda Google Container Registry için
sap-docker-registry-secretadlı SAP erişim anahtarı da görüldü; bu anahtar hem okuma hem yazma yetkisi sağlıyordu
Doğrulanan erişim kapsamı ve potansiyel etki
- Güvenlik açığı zinciriyle yapılabilecek işlemler şunlardı
- SAP dahili konteyner Registry’sindeki Docker imajlarını okuma ve değiştirme
- Google Container Registry’deki SAP Docker imajlarını okuma ve değiştirme
- SAP dahili Artifactory sunucusundaki artefaktları okuma ve değiştirme
- SAP AI Core Kubernetes kümesinde cluster-admin yetkisi elde etme
- Müşteri bulut kimlik bilgilerine ve özel AI çıktılarına erişme
- Potansiyel bir saldırgan müşteri verilerine erişebilir ve dahili artefaktları kirleterek etkinin ilgili hizmetlere ve diğer müşteri ortamlarına yayılmasına neden olabilirdi
- Tüm güvenlik açıkları SAP güvenlik ekibine bildirildi ve SAP tarafından düzeltildi; SAP bunu güvenlik araştırmacıları kredi sayfasında kabul etti
- Müşteri verileri ihlal edilmedi
Savunma açısından ortaya çıkan sorunlar
- Başlıca savunma hattı Istio’nun dahili ağ erişimini engelleyen yapısıydı; ancak bu bariyer aşıldıktan sonra birçok dahili varlık ek kimlik doğrulaması istemiyordu
- Dahili ağ güvenilir bir bölge gibi ele alındığı için tek bir atlatma hizmetin ele geçirilmesine dönüştü
- Dahili hizmetler sıkılaştırılmış olsaydı saldırının etkisi tam hizmet ele geçirmeden küçük bir güvenlik olayı seviyesine düşürülebilirdi
- Kubernetes tabanlı yönetilen hizmetlerde kontrol düzlemi ve müşteri compute’u API’ler, kimlikler, paylaşımlı compute ve yazılım tabanlı ağ ayrımıyla mantıksal olarak bağlandığından kiracı izolasyonu tuzakları ortaya çıkabilir
- AI eğitimi doğası gereği rastgele kod çalıştırmayı gerektirdiğinden, güvenilmeyen kodun dahili varlıklardan ve diğer kiracılardan uygun şekilde ayrılmasını sağlayan koruma raylarına ihtiyaç vardır
Açıklama takvimi
- 25 Ocak 2024: Wiz Research güvenlik bulgularını SAP’ye bildirdi
- 27 Ocak 2024: SAP yanıt verdi ve vaka numarası atadı
- 16 Şubat 2024: SAP ilk güvenlik açığını düzeltti ve ilgili gizli değerleri döndürdü
- 28 Şubat 2024: Wiz Research yamayı 2 yeni güvenlik açığıyla atlattı ve SAP’ye bildirdi
- 15 Mayıs 2024: SAP bildirilen tüm güvenlik açıkları için düzeltmeleri dağıttı
- 17 Temmuz 2024: Kamuya açıklandı
1 yorum
Hacker News görüşleri
Bunun bir yapay zeka ürünü olduğunu anlıyorum, ama buradaki açık k8s yapılandırmasında
Yapay zeka ürününün kendisiyle, yapay zeka eğitimiyle, makine öğrenmesiyle veya üretken yapay zekayla pek ilgisi yok; daha çok zayıf bulut platformu güvenliği meselesi
“Saldırganın kötü amaçlı bir yapay zeka modeli ve eğitim prosedürleri çalıştırabilmesi” temel nedendi; bu da özünde kod çalıştırmadır
Yapay zeka ürünleri yaygınlaştığı ve altyapılarına dikkat etmek gerektiği için bunun araştırılıp incelendiğini düşünüyorum
Güvenliği uygulamak, güvenlik ihtiyacını bilmek, test etmek ya da güvenli olana kadar piyasaya sürmemek; bunların hepsi satıcı olarak o markanın yapması gereken işler
SAP’nin, Wiz’in araştırmasının neden tam küme yöneticisi yetkisine ulaşmadan engellenmediğini ciddi biçimde değerlendirmesini isterim
SAP tarafının bu etkinlik için uyarı alıp almadığını, doğru düzgün soruşturup soruşturmadığını bilmek isterim. SAP’nin şüpheli ağ etkinliği için yeterli uyarı mekanizmalarına sahip olmasını gerektiren düzenlemelere tabi olup olmadığını ve bu araştırmanın bunları karşılamadıklarının kanıtı sayılıp sayılamayacağını da merak ediyorum
Sorun, bunlara gerçekten uyulup uyulmadığı; yoksa sadece raftaki klasörlerde mi kaldığı
Bug bounty programları da genellikle kapsam içindeki hedefler için bu tür kurallar ister. Araştırmacı bir güvenlik şirketine bağlı olduğuna göre burada da böyle olmasını beklerim
Araştırmacılar genelde hangi noktada ek izin istediklerini yazıya ekler, ama bu her zaman olmaz
Bir tiller instance’ının çalışıyor olması şok edici. 2020’den beri desteği kesilmiş durumda: https://helm.sh/blog/helm-v2-deprecation-timeline/
Burada söz konusu olan büyük bir şirket ve tiller’dan uzaklaşmayı gerektiren nispeten karmaşık bir migrasyon var; ama bu hafifletici nedenler olmasa bile eski yazılımlara kolayca rastlanıyor
Bu gerçekten kötü. Tek bir K8s kümesi işletip güçlü çok kiracılılık güvenceleri mi beklemişler?
Büyük bulutların hepsi müşteriler arasında sanal makine sınırları ve ayrı K8s kümeleri kullanıyor. Microsoft da birkaç yıl önce K8s’i temel güvenlik sınırı olarak görmeyi beklediği fonksiyon ürünlerinden birinde benzer şekilde yakalanmıştı
Örneğin model eğitimi gibi rastgele kod çalıştırılan bir durumda K8s çok kiracılılığının nasıl bir rol oynadığından emin değilim
Bana göre ana sorun, proxy/güvenlik duvarı olan Istio’nun arkasına geçince tüm iç ağ iletişimine güvenilmesi. Yine de k8s kümelerini yeterince anlamıyor olabilirim
Sürekli değişen bir hedef olduğu için, admission controller’larla bunu güvenli hale getirme planı da pek iyi değil
Düşmanca kiracıları varsayan güçlü çok kiracılılığı düşünmek istiyorsanız önce VirtualClusters gibi şeylere bakmak gerekir (https://github.com/kubernetes-sigs/cluster-api-provider-nest...). Bu da sadece kontrol düzlemiyle ilgili; veri düzlemine dokunmuyor bile
O ek katman olsa bile ne kadar güvenli olduğundan emin değilim. Sanal makine tarafında da yıllardır akıl almaz VM escape açıkları oldu
Her müşteri için ayrı küme tutmak maliyet açısından saçma derecede pahalı ve gezegen için de kötü. Güvenliğin en öncelikli olduğu premium bir ürünse mümkün olabilir, ama müşteri başına ayrı küme fiilen para yakmaktır
Açık bulup blog içeriği üretmek için izinsiz olarak ağlara sızan şirketlerin yargılanması gerektiğini düşünüyorum
Bu yazı özellikle açık ifşasıyla ince bir şekilde paketlenmiş saldırgan bir yazı gibi duruyor. “İş birliği için teşekkür edildi” ifadesi de biraz şantaj gibi geliyor
Bu açıdan bakınca oldukça farklı görünmüyor mu?
Ancak hukuk pratiğinin gösterdiği gibi, “milyarlarca dolarınız varsa hukuk artık size uygulanmaz” noktasına varıyor
Wiz’i kullanan var mı?
Kurumsal yazılım şirketleri arasında en hızlı roket olabilir. 1,5 yılda 100 milyon dolar ARR’ye, 3. yılın sonunda ise 350 milyon dolara ulaştı
https://www.wiz.io/blog/100m-arr-in-18-months-wiz-becomes-th...
Graf özelliğiyle, isterseniz tüm hesaplar genelinde neredeyse her şeyi sorgulayabiliyorsunuz
Şirkettekileri ikna edip ürünün yıllık sızma testini üretim ortamında çalıştırabildiğim ve tüm üretim altyapısını kapsam içine aldırabildiğim için mutluyum
Odak belirli bir ürün ya da sistem olabilir, ama her şey kapsamın içinde. İlk test devam ediyor ve henüz kimse çığlık atmadı; umarım iyi gider
Metasploit ile üstünkörü tarayıp geçen seviyenin ötesinde, işini düzgün yapan bir sızma testi şirketi önerebilir misiniz, onu da merak ediyorum
Doğru okuduysam, müşterinin hesap verileri yine aynı müşteriye mi açığa çıkıyor? Günlüklerin bir kısmı istisna gibi görünüyor
Bir güvenlik araştırmacısı, metni gizlemek için pikselleştirmenin iyi bir tercih olmadığını bilecek kadarını biliyor olmalıydı
https://www.bleepingcomputer.com/news/security/researcher-re...
Bulanıklaştırma ya da pikselleştirme, etkili olup olmamasından bağımsız olarak, fiilen gereksiz görünüyor. Gizlenen veriler yerel ana makine adları ve imaj hash’lerinin bir kısmı gibi duruyor
Düzenleme: Tekrar bakınca bazı yerlerde bulanıklaştırma, bazı yerlerde pikselleştirme yapılmış gibi görünüyor