ld.so OpenBSD-də zəiflik

Dinamik yükləyici ld.beləOpenBSD-yə daxil olan , müəyyən şərtlər altında ola bilər SUID/SGID- proqramlar LD_LIBRARY_PATH mühit dəyişənini tərk edir və bununla da yüksək imtiyazlarla işləyən proses kontekstində üçüncü tərəf kodunun yüklənməsinə icazə verir. Boşluğu aradan qaldıran yamalar buraxılışlar üçün əlçatandır 6.5 и 6.6. İkili yamaqlar (syspatch) amd64, i386 və arm64 platformaları üçün artıq istehsaldadır və bu xəbər dərc olunana qədər yükləmək üçün əlçatan olmalıdır.

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 Qualy's, eləcə də bir neçə əvvəl aşkar edilmişdir problemlər. Zəifliyi müəyyən edən təhlükəsizlik tədqiqatçıları problemin nə qədər tez həll edildiyini qeyd etdilər: yamaq hazırlandı və OpenBSD layihəsi bildiriş aldıqdan sonra üç saat ərzində yeniləmələr buraxıldı.

Əlavə: Problemə nömrə verilib CVE-2019-19726. Oss-təhlükəsizlik poçt siyahısında hazırlanmışdır rəsmi açıqlamaOpenBSD 6.6, 6.5, 6.2 və 6.1 arxitekturalarında işləyən prototip istismarı da daxil olmaqla
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

Добавить комментарий