Yaygın olarak kullanılan Kubernetes konteyner yönetimi sistemindeki bir güvenlik hatası, saldırganların Windows uç noktalarında Sistem ayrıcalıklarıyla uzaktan kod yürütmesine olanak tanır ve potansiyel olarak bir alandaki tüm Windows düğümlerinin tamamen ele geçirilmesine yol açar. Kubernetes kümesi.
Akamai güvenlik araştırmacısı Tomer Peled, CVE-2023-5528 olarak takip edilen ve CVSS puanı 7,2 olan açığı keşfetti. Kendisi, istismarın, bir kümedeki bölmeler arasında veri paylaşımını desteklemeyi veya bir bölmenin yaşam döngüsünün dışında kalıcı olarak saklamayı amaçlayan bir özellik olan Kubernetes birimlerini manipüle etmekten kaynaklandığını açıkladı. bir blog yazısında 13 Mart'ta yayınlandı.
Bir saldırı vektörü olarak saldırganların bölmeler ve kalıcı birimler oluşturmak için GitHub'daki kusur listesine göre bu, Windows düğümlerinde yönetici ayrıcalıklarına yükselmelerine olanak tanıyacak.
Peled, Dark Reading'e “Bu güvenlik açığından yararlanmak çok kolaydır çünkü bir saldırganın yalnızca bir parametreyi değiştirmesi ve Windows uç noktaları üzerinden RCE kazanmak için 3 YAML dosyası uygulaması yeterli olacaktır” dedi. Kubernetes çerçevesi Gönderide “Temelde her şey için YAML dosyalarını kullanıyor” diye yazdı.
Kubernetes kümeleri yalnızca Windows için ağaç içi depolama eklentisi kullanılıyorsa etkilenir; ancak Peled, gönderide “geliştiricilerin kullanabileceği birçok farklı birim türü bulunduğunu” ve farklı saldırı senaryoları oluşturduğunu gözlemledi.
Hem şirket içi dağıtımları hem de Azure Kubernetes Hizmetini çalıştıran 1.28.4 sürümünden önceki Kubernetes varsayılan yüklemeleri güvenlik açığından etkilenir. Kubernetes ekibi bu kusur konusunda uyarıldı ve düzeltme için mevcut bir yama mevcut ve bu da şiddetle tavsiye ediliyor.
Peled, “Sorun kaynak kodunda yer aldığından, bu tehdit aktif kalacak ve istismarı muhtemelen artacaktır; bu nedenle herhangi bir Windows düğümü olmasa bile kümenize yama yapmanızı şiddetle tavsiye ediyoruz” diye yazdı.
Kusurları Takip Etmek
Peled kusuru, aynı temel nedeni paylaşan başka bir güvenlik açığını inceledikten sonra keşfetti: güvenli olmayan işlev çağrısı ve Kubernetes'te kullanıcı girişi temizleme eksikliği. O kusur şuydu CVE-2023-3676, kötü amaçlı bir YAML dosyasının kümeye uygulanmasıyla yararlanılabilecek bir komut ekleme güvenlik açığı. Bu güvenlik açığının keşfedilmesi, YAML dosyalarındaki subPath parametresinin temizlenmemesinden kaynaklanan, hacimli bölmeler oluşturan ve kötü amaçlı kod ekleme fırsatı açan iki güvenlik açığının daha keşfedilmesine yol açtı.
Peled, “Bu araştırmanın sonunda, kodda başka bir komut ekleme güvenlik açığına yol açabilecek gibi görünen potansiyel bir yer fark ettik” ve bu sonuçta CVE-2023-5528 haline geldi, diye açıkladı Peled.
“Birkaç denemeden sonra benzer bir sonuca ulaşmayı başardık: komutları kubelet hizmeti (SİSTEM ayrıcalıkları) olarak çalıştırmak” diye yazdı.
Kullanım ve Yamalama
Araştırmacıların yürüttüğü kavram kanıtı, Kubernetes'teki birim türlerinden biri olan yerel birimlere odaklandı. Yerel birim içeren bir bölme oluştururken kubelet hizmeti, sonunda “exec.command”a cmd satırı çağrısıyla bir işleve ulaşacak ve birimin düğümdeki konumu ile bölmenin içindeki konum arasında bir sembolik bağlantı oluşturacaktır.
Birçok terminal gibi, Windows'un Komut İstemi (cmd), iki veya daha fazla komutun birbiri ardına yürütülmesine ve aynı komut satırında birden fazla komutun yürütülmesine olanak tanır. Peled, “Cmd yürütmesindeki parametrelerden birini kontrol edebiliyor olmamız, komut enjeksiyonunu kullanabileceğimiz anlamına geliyor” diye açıkladı.
Yerel birimlerde bunu başarmak için, diğerlerinin yanı sıra bir persistsVolume belirtme veya oluşturma ihtiyacı da dahil olmak üzere önkoşullar vardır. Ancak bu birim oluşturulduktan sonra “bir kullanıcı persistsVolumeClaim kullanarak depolama alanı isteyebilir” diye yazdı. “Enjeksiyonun yapılabileceği yer burası.”
Kusur için oluşturulan yama, cmd çağrısını silerek ve onu sembolik bağlantıyı oluşturmak için aynı işlemi gerçekleştirecek yerel bir GO işleviyle değiştirerek enjeksiyon olasılığını ortadan kaldırır. “Artık GO 'os' kütüphanesi başlangıçta amaçlandığı gibi yalnızca bir sembolik bağlantı işlemi gerçekleştirecek” diye açıkladı.
Sisteminiz Savunmasız mı?
Kubernet'ler konteynerler için en yaygın kullanılan açık kaynaklı sistemlerden biri olarak ortaya çıkmıştır; ancak aynı zamanda öncelikli hedef nedeniyle tehdit aktörleri için büyük potansiyel kurumsal verilerin kullanılması ve bunlara erişim için. Üstelik çoğu zaman Kubernetes yapılandırmasının kendisi de savunmasız bir kurulum oluşturarak tehdit aktörlerine geniş bir saldırı yüzeyi sağlıyor.
Peled, “Kubernetes çok karmaşık ve sağlam bir araç” diyor. “Bir yandan sağlamlığı, kullanıcıların deneyimlerini kuruluşlarının ihtiyaçlarına göre uyarlamasına olanak tanıyor, ancak diğer yandan hem geliştirici hem de kullanıcı açısından her yönünün güvence altına alınmasını çok zorlaştırıyor.”
Peled, gerçekten de, CVE-2023-5528'in ve bununla ilgili kusurların keşfi, Kubernetes dağıtan kuruluşlar için “Kubernetes yapılandırma YAML'lerini doğrulamanın ne kadar önemli olduğunu vurguluyor, çünkü Kubernetes'in kendisindeki ve sepet projelerindeki çeşitli kod alanlarında giriş temizleme işlemi eksik” diye yazdı Peled. .
Dark Reading'e, rol tabanlı erişim kontrolü (RBAC) gibi en iyi uygulamaları takip etmenin ve kümelerin güncel olduğundan emin olmanın “bilinen tehditlerin büyük bir bölümünü azaltması gerektiğini” söylüyor.
Kubernetes çalıştıran kurumsal bir ortam, yalnızca sistem sürümünün 1.28.4'ten eski olması ve sistemin Windows düğümlerini çalıştırması durumunda bu kusurdan yararlanmaya karşı savunmasızdır. Durum böyleyse Akamai, yöneticilere sisteme yama uygulanması gerekip gerekmediğini belirlemek için çalıştırmaları için bir komut sağladı. Bu durumda yama uygulamasına öncelik verilmelidir.
Peled, “Kubernetes kümenizde herhangi bir Windows düğümü yoksa, bu özel güvenlik açığını düzeltmek için acele etmenize gerek yok” dedi. “Fakat yine de vaktiniz olduğunda yama yapmak önemlidir.”
Hemen yama uygulamak bir seçenek değilse Akamai ayrıca Sağlıyor Bu tür davranışları tespit etmeye ve engellemeye yardımcı olacak bir Açık Politika Aracısı (OPA) kuralı. OPA, kullanıcıların düğümlere giren ve çıkan trafikle ilgili verileri almasına ve alınan veriler üzerinde politikaya dayalı eylemler gerçekleştirmesine olanak tanıyan açık kaynaklı bir aracıdır.