Dinamični učitavač , ki je del OpenBSD, lahko pod določenimi pogoji -aplikacije pusti okoljsko spremenljivko LD_LIBRARY_PATH in tako omogoči nalaganje zunanjega kode v kontekstu procesa, ki se izvaja s povišanimi privilegiji. Popravki za odpravo ranljivosti so na voljo za različice in . Binarni popravki () za platforme amd64, i386 in arm64 so že na voljo in bi morali biti dostopni za prenos ob objavi te novice.
Bistvo težave: med delovanjem ld.so najprej pridobi vrednost okoljske spremenljivke LD_LIBRARY_PATH, jo s pomočjo funkcije _dl_split_path() pretvori v seznam nizov - poti do imenikov. Če se kasneje izkaže, da se trenutni proces izvaja kot SUID/SGID-aplikacija, se ustvarjen seznam in dejansko spremenljivko LD_LIBRARY_PATH izbriše. Pri tem, če funkcija _dl_split_path() naleti na pomanjkanje pomnilnika (kar je težko zaradi obstoječih omejitev velikosti okoljskih spremenljivk na 256 kB, vendar teoretično možno), bo spremenljivka _dl_libpath dobila vrednost NULL, in kasnejša preverjanje te spremenljivke bo povzročila preskočitev klica _dl_unsetenv("LD_LIBRARY_PATH").
Ranljivost so odkrili strokovnjaki , prav tako kot težav. Raziskovalci, ki so odkrili ranljivost, so poudarili hitro rešitev problema: popravki so bili pripravljeni in posodobitve objavljene v treh urah po obvestilu projekta OpenBSD.
Dopolnitev: Težavi je dodeljeno številko . Na seznamu za razdelitev oss-security je objavljeno , ki vključuje prototip exploit-a, ki deluje v OpenBSD 6.6, 6.5, 6.2 in 6.1 na arhitekturah
amd64 in i386 (exploit se lahko prilagodi tudi za druge arhitekture).
Težava je izkoriščana v privzeti namestitvi in omogoča nepovezanemu lokalnemu uporabniku, da izvrši kodo s pravicami root preko zamenjave knjižnice pri zagonu SUID-orodij chpass ali passwd. Za ustvarjanje potrebnih pogojev za izkoriščanje pomanjkanja pomnilnika se uporablja nastavitev omejitve RLIMIT_DATA preko setrlimit.
Izvor: opennet.ru
