Dinamik yükləyici
Problemin mahiyyəti: əməliyyat zamanı ld.so əvvəlcə mühitdən LD_LIBRARY_PATH dəyişəninin dəyərini çıxarır və _dl_split_path() funksiyasından istifadə edərək onu sətirlər massivinə - kataloqlara gedən yollara çevirir. Əgər sonradan məlum olarsa ki, cari proses SUID/SGID tətbiqi tərəfindən başlayıb, o zaman yaradılmış massiv və əslində LD_LIBRARY_PATH dəyişəni təmizlənir. Eyni zamanda, əgər _dl_split_path() yaddaşı tükənirsə (bu, mühit dəyişənlərinin ölçüsünə dair açıq-aşkar 256 kB limitinə görə çətindir, lakin nəzəri cəhətdən mümkündür), onda _dl_libpath dəyişəni NULL dəyərini və sonrakı yoxlamaları alacaq. bu dəyişənin dəyəri _dl_unsetenv("LD_LIBRARY_PATH") üçün çağırışı atlamağa məcbur edəcək.
Mütəxəssislər tərəfindən aşkar edilən zəiflik
Əlavə: Problemə nömrə verilib
amd64 və i386 (istismar digər arxitekturalar üçün uyğunlaşdırıla bilər).
Problem defolt quraşdırmada istifadə edilə bilər və imtiyazsız yerli istifadəçiyə chpass və ya passwd suid utilitlərini işlədən zaman kitabxananın dəyişdirilməsi vasitəsilə kodu kök kimi icra etməyə imkan verir. Əməliyyat üçün lazım olan aşağı yaddaş şərtlərini yaratmaq üçün setrlimit vasitəsilə RLIMIT_DATA limitini təyin edin.
Mənbə: opennet.ru