Ld.so OpenBSD'deki güvenlik açığı

Dinamik yükleyici ld.soOpenBSD'ye dahil olan belirli koşullar altında, SUID/SGID- uygulamalar LD_LIBRARY_PATH ortam değişkeninden ayrılır ve böylece üçüncü taraf kodunun yükseltilmiş ayrıcalıklarla çalışan bir işlem bağlamında yüklenmesine izin verir. Güvenlik açığını gideren yamalar yayınlanabilir 6.5 и 6.6. İkili yamalar (sistem paketiamd64, i386 ve arm64 platformları için ) halihazırda üretimdedir ve bu haber yayınlandığı tarihte indirilebilir hale gelecektir.

Sorunun özü: ld.so, işlem sırasında önce ortamdan LD_LIBRARY_PATH değişkeninin değerini çıkarır ve _dl_split_path() işlevini kullanarak onu bir dizi diziye - dizinlere giden yollara dönüştürür. Daha sonra mevcut sürecin bir SUID/SGID uygulaması tarafından başlatıldığı ortaya çıkarsa, oluşturulan dizi ve aslında LD_LIBRARY_PATH değişkeni temizlenir. Aynı zamanda, eğer _dl_split_path()'ın belleği tükenirse (bu, ortam değişkenlerinin boyutuna ilişkin açık 256 kB sınırı nedeniyle zordur, ancak teorik olarak mümkündür), o zaman _dl_libpath değişkeni NULL değerini alır ve sonraki kontrolleri yapar. bu değişkenin değeri _dl_unsetenv("LD_LIBRARY_PATH") çağrısını atlamaya zorlayacaktır.

Uzmanlar tarafından bulunan güvenlik açığı Qualys, birlikte daha önce ortaya çıkan birkaç sorunlar. Güvenlik açığını tespit eden güvenlik araştırmacıları, sorunun ne kadar hızlı çözüldüğünü kaydetti: OpenBSD projesinin bildirim almasının ardından üç saat içinde bir yama hazırlandı ve güncellemeler yayınlandı.

Ek: Soruna bir numara atandı CVE-2019-19726. Oss-güvenlik posta listesinde yapıldı resmi duyuruOpenBSD 6.6, 6.5, 6.2 ve 6.1 mimarilerinde çalışan bir prototip istismarı dahil
amd64 ve i386 (istismar diğer mimarilere uyarlanabilir).
Sorun, varsayılan kurulumda istismar edilebilir ve ayrıcalığı olmayan bir yerel kullanıcının, chpass veya passwd suid yardımcı programlarını çalıştırırken kitaplık değiştirme yoluyla kodu root olarak çalıştırmasına olanak tanır. Çalışma için gerekli düşük bellek koşullarını oluşturmak amacıyla RLIMIT_DATA sınırını setrlimit aracılığıyla ayarlayın.

Kaynak: opennet.ru

Yorum ekle