Linux Çekirdek Hatası, Bilgisayar Korsanlarının Kubernetes Kapsayıcılarından Kaçmasına İzin Verebilir
Linux çekirdeğini etkileyen ve CVE-2022-0185 olarak izlenen bir güvenlik açığı, ana bilgisayar sistemindeki kaynaklara erişim sağlayarak Kubernetes'teki kapsayıcılardan kaçmak için kullanılabilir.
Güvenlik araştırmacıları, bu güvenlik sorunundan yararlanmanın başlangıçta tahmin edilenden daha kolay ve daha umut verici olduğu ve istismar kodunun yakında halka açık hale geleceği için yama uygulamasının acil bir mesele olduğu konusunda uyarıyorlar.
Container kırılmaları, güvenliği ihlal edilmiş ağda daha derin sızma ve yanal hareketin yolunu açabilen özel bir tür siber saldırıdır.
Sınırlı olmayan bir kusur
CVE-2022-0185, "Dosya Sistemi Bağlamı" Linux çekirdek bileşeninde, sınırların dışında yazmaya, hizmet reddine ve rastgele kod yürütülmesine neden olabilen yığın tabanlı bir arabellek taşması güvenlik açığıdır.
Akışı tetiklemek, bir saldırganın çekirdek belleğindeki değerleri değiştirmesine ve aynı düğümde çalışan herhangi bir işleme erişmesine olanak tanır.
Geçen hafta Linux dağıtımları tarafından yayınlanan güvenlik bildirimlerine dayanarak, yerel bir kullanıcı sistemdeki ayrıcalıklarını yükseltmek için kusurdan yararlanabilir.
Ancak, yararlanma işleminin çalışması için, saldırganın ayrıcalıksız bir ad alanından yararlanması veya CAP_SYS_ADMIN izniyle bir ad alanına girmek için "paylaşmayı kaldır"ı kullanması gerekir.
Bu yetenek, Docker'da varsayılan ayar değildir ve kapsayıcıyı başlatırken "–ayrıcalıklı" bayrağını kullanmak yaygın bir uygulama değildir.
Ayrıca, "paylaşmayı kaldır" komutu, varsayılan olarak Docker'ın "seccomp" filtresi tarafından engellenir, bu nedenle komutun çalıştırılmasına ilk etapta izin verilmez.
Aquasec'ten analistler, bir Kubernetes kümesinde Docker veya diğer kapsayıcı platformları kullanıldığında, seccomp filtresinin varsayılan olarak devre dışı bırakıldığını ve bu nedenle "paylaşmayı kaldır" komutunun engellenmediğine dikkat çekiyor.
Bu nedenle, bir saldırgan komutu çalıştırabilir ve güvenliği ihlal edilen sistemde kök olarak kod çalıştırma dahil olmak üzere tüm özelliklere sahip bir kabuk alabilir.
Since I forgot to post it, here's my kCTF (running on Google's hardened COS) breakout, using CVE-2022-0185.https://t.co/khDlayIuoj
— Jamie Hill-Daniel (@clubby789) January 21, 2022
Crusaders of Rust (CoR) CTF ekibi William Liu ve Jamie Hill-Daniel'in üyeleri, bu güvenlik açığının keşfedilmesiyle tanınıyor . Toplamda, takımın Avrupa ve ABD'den 21 üyesi var.
BleepingComputer ile görüşen CoR üyeleri, yama için daha fazla zaman vermek amacıyla CVE-2022-0185 için yararlanma kodunu bir haftadan biraz fazla bir süre içinde yayınlamayı planladıklarını söylediler. Kod, CoR'nin GitHub deposunda mevcut olacak.
Yığın taşması hatası, 5.1-rc1'den en son yamalı sürümlere (5.4.173, 5.10.93, 5.15.1) kadar tüm Linux çekirdek sürümlerini etkiler. Ubuntu 20/21, Debian 11 ve bazı Red Hat paketlerini etkiler.
Bu güvenlik açığı için açıklardan yararlanma kodu oluşturuldu ve bunu keşfeden araştırmacılardan biri, başarıyla kullanılabileceğini gösterdi.
https://t.co/ffiFyHrakE
🙂 pic.twitter.com/Qvaw9dbus1— ryaagard (@ryaagard) January 19, 2022
CoR ekibi ayrıca Docker kapsayıcıları için Google Container için optimize edilmiş işletim sistemi için çalışan açıklardan yararlanma kodu da oluşturduklarını söyledi.
Sonuç
Linux çekirdeğini 5.16.2 veya sonraki bir sürüme yükseltmek sorunu giderir. Ancak, güncelleme henüz tüm Linux dağıtımları için mevcut değildir ve çekirdeği kaynaktan oluşturmak birçok sistem yöneticisi tarafından benimsenen bir seçenek değildir.
Bu durumlarda, kullanıcılara ayrıcalıksız kullanıcı ad alanlarını devre dışı bırakmaları ve yalnızca CAP_SYS_ADMIN içeren bölmeleri yalnızca kesinlikle gerekli olduğu iş yüklerinde tutmaları önerilir.
Ubuntu'da, ayrıcalığı olmayan ad alanlarını devre dışı bırakmak için bu komutu kullanın:
sysctl -w kernel.unprivileged_userns_clone=0
Kapsayıcılı dağıtımlar gerektirmeyen Red Hat kullanıcıları, aşağıdaki komutla kullanıcı ad alanlarını devre dışı bırakabilir:
# echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf
# sysctl -p /etc/sysctl.d/userns.conf
Ayrıcalıksız kapsayıcılara ihtiyacınız varsa, seccomp filtresinin "paylaşmayı kaldır" çağrısını aktif olarak engellediğinden emin olun.
Bireysel iş yükleri için seccomp, "securityContext" alanına tanım olarak eklenebilir. Kubernetes'in bunun nasıl yapılacağına dair ayrıntılı bir öğreticisi vardır, bu yüzden kontrol ettiğinizden emin olun.
Siber dünyadaki gelişmelerden haberdar olmak ve haftalık haber bültenine ulaşmak için e-posta listesine kaydolun.