Încărcător dinamic , parte a OpenBSD, în anumite condiții poate -aplicația lasă variabila de mediu LD_LIBRARY_PATH și astfel permite încărcarea codului terț în contextul procesului care rulează cu privilegii crescute. Pachetele cu remedieri pentru vulnerabilitate sunt disponibile pentru versiunile și . Patch-uri binare () pentru platformele amd64, i386 și arm64 sunt deja în producție și ar trebui să fie disponibile pentru descărcare la momentul publicării acestei știri.
Esenta problemei: în timpul funcționării ld.so, inițial extrage din mediu valoarea variabilei LD_LIBRARY_PATH, cu ajutorul funcției _dl_split_path() o transformă într-un array de șiruri - căi către directoare. Dacă mai târziu se dovedește că procesul curent este pornit de o aplicație SUID/SGID, atunci array-ul creat și, efectiv, variabila LD_LIBRARY_PATH sunt șterse. În același timp, dacă în timpul funcționării _dl_split_path() se confruntă cu o insuficiență de memorie (ceea ce este greu datorită limitării explicite a dimensiunii variabilelor de mediu la 256 kilobytes, dar teoretic posibil), variabila _dl_libpath va primi valoarea NULL, iar verificarea ulterioară a valorii acestei variabile va omite apelul _dl_unsetenv("LD_LIBRARY_PATH").
Vulnerabilitatea a fost găsită de specialiștii , precum și Cercetătorii în securitate care au identificat vulnerabilitatea au remarcat rapiditatea cu care a fost rezolvată problema: patch-ul a fost pregătit și actualizările au fost emise în termen de trei ore de la primirea notificării de către proiectul OpenBSD.
Complement: Problemei i-a fost atribuit numărul . Un anunț oficial a fost făcut pe lista de discuții oss-security, amd64 și i386 (exploitul poate fi adaptat și pentru alte arhitecturi).
Problema este exploatabilă în instalarea implicită și permite unui utilizator local fără privilegii să execute cod cu drepturi de root prin substituirea bibliotecii la rularea utilitarelor suid chpass sau passwd. Pentru a crea condițiile necesare exploatării, se utilizează limitarea memoriei RLIMIT_DATA prin setrlimit.
Încărcătorul dinamic ld.so, parte a OpenBSD, în anumite condiții poate
Sursa: opennet.ro
