Ana içeriğe geç
Programlama

Rust derleyicisinde 11 yıllık bellek güvenliği açığı bulundu

Öne çıkanlar

  • Rust 1.4 sürümünden beri var olan açık, kovaryant alan atamasıyla yaşam süresi denetimini aşıyor.
  • Derleyici, kapsam dışı bellek referanslarını 'static kabul ederek use-after-scope hatasına neden oldu.
  • Rust ekibi sorunu P-high öncelik seviyesine yükselterek tip ekibine atadı.

Rust programlama dilinin ödünç alma denetleyicisinde (borrow checker) yaşam süresi kısıtlamalarını devre dışı bırakan kritik bir açık tespit edildi. GitHub üzerinden açılan hata bildirimine göre, kovaryant alan ataması yöntemiyle derleyicinin yaşam süresi denetimleri aşılabiliyor. Bu durum, derleyicinin reddetmesi gereken güvensiz kodları onaylamasına ve AddressSanitizer ile yapılan testlerde kapsam dışı bellek kullanımına (use-after-scope) yol açtı.

Geliştirici topluluğu tarafından paylaşılan örnekler, hatanın Rust 1.4 sürümünden bu yana derleyicide var olduğunu ortaya koydu. Yapı yıkıcılarında (Drop trait) 'static yaşam süresi kuralı aranmasına rağmen, kovaryant alan atamaları üzerinden yerel ve geçici referansların statik gibi taşınabildiği belirlendi. Bu açık sayesinde programlar, geçersiz kılınan bellek bölgelerine erişerek segfault ve rastgele veri sızıntısı gibi beklenmedik davranışlar sergiledi.

Rust ekibi, sorunu yüksek öncelikli (P-high) olarak sınıflandırdı ve tip denetimi (T-types) çalışma grubunu inceleme için görevlendirdi. Geliştiriciler, tip birleştirme (unification) mekanizmasının türlerin yaşam süresi sınırlarını genel olarak doğrulamadığını belirtti. Hatanın çözümü için derleyicinin varyans ve yıkıcı işleme mantığı üzerinde düzeltme çalışmaları başladı.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.