Bir güvenlik araştırmacısının Haziran ortasında keşfedip Linux yöneticilerine bildirdiği, Linux çekirdeğindeki kritik bir güvenlik açığı için açıktan yararlanma kodu yakında kullanılabilir hale gelecek.
Araştırmacının StackRot (CVE-2023-3269) olarak adlandırdığı hata, Linux kernel 6.1’den 6.4’e kadar olan sürümleri etkiliyor ve saldırganlara etkilenen sistemlerde ayrıcalıkları artırma yolu sunuyor.
Tüm Linux Yapılandırmalarını Etkiler
Çin’deki Pekin Üniversitesi’nden güvenlik araştırmacısı Ruihan Li, güvenlik açığını keşfetti ve bu hafta güvenlik açığının neredeyse tüm Linux çekirdeği yapılandırmalarını etkilediğini ve tetiklenmesi için minimum yetenek gerektirdiğini açıkladı.
Linux yaratıcısı Linux Torvalds liderliğindeki bir müdahale ekibi, güvenlik açığını gidermek için bir dizi yama geliştirmek için yaklaşık iki hafta çalıştı. Li, keşfini açıklayan bir GitHub gönderisinde “28 Haziran’da, Linux çekirdeği 6.5 için birleştirme penceresi sırasında, düzeltme Linus’un ağacında birleştirildi” dedi. Li, “Linus, yama serisini teknik açıdan açıklamak için kapsamlı bir birleştirme mesajı sağladı” dedi.
Yamalar o zamandan beri 6.1.37, 6.2.11 ve 6.4.1 çekirdeklerine geri yüklendi ve “1 Temmuz’da ‘Stack Rot’ hatasını etkili bir şekilde çözdü” diye yazdı Li. Açıklardan yararlanma kodunun tamamı ve kapsamlı bir yazım, en geç Temmuz ayının sonunda halka açık hale getirilecek.”
StackRot, Linux çekirdeğinin, çalışan bir işlemin yığın belleğini otomatik olarak büyütmek veya genişletmek için bir mekanizma olan yığın genişletme işlemiyle ilgilidir.
Li, Linux çekirdeğindeki sanal bellek alanlarını yönetmeye yönelik veri yapısının, belirli bir bellek yönetimi işlevini RCU tarafından serbest kullanımdan sonra (UAFBR) sorunlarıyla sonuçlanacak şekilde ele aldığını söyledi. UAFBR kusurları, ücretsiz kullanımdan sonra güvenlik açığını, paylaşılan verilerin kullanımını senkronize etmek için Linux çekirdeğindeki Oku-Kopyala-Güncelle (RCU) mekanizması olarak bilinen mekanizmayla birleştirir.
Use-after-free, bir yazılım programının yeniden konumlandırıldıktan veya serbest bırakıldıktan sonra bir bellek referansını kullanmaya devam ettiği bir tür güvenlik açığıdır. Bu, saldırganlara serbest bırakılan ancak hala kullanılan bellek alanına rasgele kod eklemenin bir yolunu sunar. Li, “Ayrıcalıksız bir yerel kullanıcı, çekirdeği tehlikeye atmak ve ayrıcalıklarını yükseltmek için bu kusuru kullanabilir” dedi. Linux çekirdeği, kullanılan bellek alanını boşaltmak veya yeniden tahsis etmek için RCU mekanizmasını kullanır.
Li, UAFBR güvenlik açıklarının tehlikeli olabilmesine karşın, RCU geri aramaları kullanılarak bellek boşlukları serbest bırakıldığında belleğin serbest bırakılmasıyla meydana gelen belirli bir gecikme nedeniyle bunlardan yararlanmanın kolay olmadığını açıkladı.
Türünün İlk Örneği İstismar
Araştırmacı, StackRot için açıktan yararlanmayı muhtemelen bir UAFBR hatasından başarıyla yararlanan ilk kişi olarak tanımladı. Li, “Bildiğim kadarıyla, şu anda RCU böcekleri tarafından serbest bırakıldıktan sonra kullanımı hedefleyen, halka açık açıklardan yararlanma yok” dedi. “Bu, UAFBR hatalarının istismar edilebilir olduğunun kanıtlandığı ilk örneği işaret ediyor.”
Linux çekirdeği ekipleri, Torvalds liderliğindeki kusuru giderir ve serbest kullanım sonrası durumunun oluşmasını önlemek için çekirdeğin kullanıcı modu yığın genişletme kodunu temel olarak değiştirir.
Torvalds, “Aslında teknik olarak her zaman yapmamız gereken bir şeydi,” dedi. “Ama kesinlikle ihtiyacımız olmadığı için [it]bazı şeyler hakkında tembellik yapıyorduk (‘fırsatçı’ kulağa çok daha iyi geliyor, değil mi?)” dedi.