Vulnerabilitatea în ld.so OpenBSD

Incarcator dinamic ld.deci, inclusă cu OpenBSD, poate, în anumite condiții, SUID/SGID- aplicațiile părăsesc variabila de mediu LD_LIBRARY_PATH și permit astfel încărcarea codului terță parte în contextul unui proces care rulează cu privilegii ridicate. Patch-uri care remediază vulnerabilitatea sunt disponibile pentru versiuni 6.5 и 6.6. Patch-uri binare (syspatch) pentru platformele amd64, i386 și arm64 sunt deja în producție și ar trebui să fie disponibile pentru descărcare până la publicarea acestei știri.

Esența problemei: în timpul funcționării, ld.so extrage mai întâi valoarea variabilei LD_LIBRARY_PATH din mediu și, folosind funcția _dl_split_path(), o transformă într-o matrice 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 matricea creată și, de fapt, variabila LD_LIBRARY_PATH sunt șterse. În același timp, dacă _dl_split_path() rămâne fără memorie (ceea ce este dificil din cauza limitei explicite de 256 kB privind dimensiunea variabilelor de mediu, dar teoretic posibil), atunci variabila _dl_libpath va primi valoarea NULL și verificările ulterioare ale valoarea acestei variabile va forța săriți apelul către _dl_unsetenv("LD_LIBRARY_PATH").

Vulnerabilitatea găsită de experți a lui Qualy, precum și mai multe dezvăluite anterior Probleme. Cercetătorii de securitate care au identificat vulnerabilitatea au remarcat cât de repede a fost rezolvată problema: a fost pregătit un patch și au fost lansate actualizări în termen de trei ore după ce proiectul OpenBSD a primit notificarea.

Adăugare: Problemei i s-a atribuit un număr CVE-2019-19726. Făcut pe lista de corespondență oss-security anunț oficial, inclusiv un prototip de exploit care rulează pe arhitecturi OpenBSD 6.6, 6.5, 6.2 și 6.1
amd64 și i386 (exploatația poate fi adaptată pentru alte arhitecturi).
Problema este exploatabilă în instalarea implicită și permite unui utilizator local neprivilegiat să execute cod ca root prin înlocuirea bibliotecii atunci când rulează utilitarele chpass sau passwd suid. Pentru a crea condițiile de memorie scăzută necesare funcționării, setați limita RLIMIT_DATA prin setrlimit.

Sursa: opennet.ru

Adauga un comentariu