Ana Sayfa

Rust Linux Çekirdeğinde Kritik Güvenlik Açığı Tespit Edildi

1 dk okuma

Linux çekirdeğinin Rust ile yazılan Binder modülünde, death_list yönetiminde ciddi bir yarış durumu (race condition) güvenlik açığı keşfedildi. Bu açık, node_inner.death_list.remove(self) şeklindeki güvenli olmayan bir işlemden kaynaklanıyor. Normalde, bir NodeDeath nesnesi yalnızca kendi sahibinin ölüm listesine eklenir ve bu işlem sırasında özel erişim sağlandığı için güvenli kabul edilir. Ancak, farklı bir liste üzerinde paralel erişim olması durumunda prev/next işaretçilerine eş zamanlı dokunulması veri yarışına yol açabilir.

Sorun özellikle Node::release fonksiyonunun çalışma şeklinde ortaya çıkıyor. Bu fonksiyon, bir kilit alarak tüm öğeleri yerel bir yığın listesine taşır, ardından kilidi serbest bırakır ve yığın listesini işler. Bu süreçte, diğer iş parçacıklarının orijinal liste üzerinde güvenli olmayan remove metodunu kullanmasıyla birleştiğinde, prev/next işaretçilerinde bellek bozulmasına neden oluyor. Bu durum, "kernel paging request" hataları gibi çekirdek çökmelerine yol açarak sistem kararlılığını ciddi şekilde etkileyebilir.

Tespit edilen bu güvenlik açığı, Rust'ın bellek güvenliği vaatlerine rağmen, unsafe bloklarının dikkatli kullanılmasının ve eş zamanlılık senaryolarının derinlemesine analiz edilmesinin önemini bir kez daha vurguluyor. Güvenlik açığı, çekirdek geliştiricileri tarafından hızlıca düzeltilerek, potansiyel sistem çökmelerinin ve güvenlik risklerinin önüne geçilmesi hedefleniyor.

İçgörü

Linux çekirdeğindeki Rust kodunda ortaya çıkan bu yarış durumu, bellek bozulmasına ve sistem çökmelerine neden olabilecek kritik bir güvenlik zafiyetidir.

Kaynak