Dinamik yükleyici
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çığı
Ek: Soruna bir numara atandı
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