Dinamički učitavač , koji je deo OpenBSD-a, pod određenim uslovima može ostaviti promenljivu okruženja LD_LIBRARY_PATH za -aplikacije i na taj način omogućiti učitavanje spoljnog koda u kontekstu procesa koji se izvršava sa povišenim privilegijama. Zakrpe koje ispravljaju ranjivost su dostupne za izdanja i . Binarne zakrpe () za platforme amd64, i386 i arm64 već su u proizvodnji i trebale bi biti dostupne za preuzimanje u trenutku objavljivanja ove vesti.
Suština problema: tokom rada ld.so prvo izvlači iz okruženja vrednost promenljive LD_LIBRARY_PATH, pomoću funkcije _dl_split_path() pretvara je u niz stringova — puteva do direktorijuma. Ako se kasnije otkrije da je trenutni proces pokrenut SUID/SGID-aplikacijom, tada se kreirani niz i, zapravo, promenljiva LD_LIBRARY_PATH brišu. Pri tome, ako tokom rada _dl_split_path() naiđe na nedostatak memorije (što je teško zbog postojanja očiglednog ograničenja na veličinu promenljivih okruženja od 256 kB, ali teoretski moguće), promenljiva _dl_libpath će dobiti vrednost NULL, a naredna provera te promenljive će propustiti poziv _dl_unsetenv(„LD_LIBRARY_PATH”).
Vulnerability detected by experts , kao i problema. Istraživači bezbednosti koji su otkrili ranjivost naglasili su brzinu rešenja problema: zakrpa je pripremljena, a ažuriranja su objavljena u roku od tri sata nakon obaveštavanja projekta OpenBSD.
Dodatak: Problemu je dodeljen broj . U mailing listi oss-security je napravljen , koji uključuje prototip exploit-a koji radi u OpenBSD 6.6, 6.5, 6.2 i 6.1 na arhitekturama
amd64 i i386 (exploit se može prilagoditi i za druge arhitekture).
Problem je iskoristiv u podrazumevanoj instalaciji i omogućava neprivilegovanom lokalnom korisniku da izvrši kod sa root pravima putem zamene biblioteke pri pokretanju suid alata chpass ili passwd. Za stvaranje neophodnih uslova za eksploataciju koristi se ograničenje RLIMIT_DATA putem setrlimit.
Izvor: opennet.ru
