Zraniteľnosť v ld.so OpenBSD

Dynamický nakladač ld.so, ktorý je súčasťou OpenBSD, môže za určitých podmienok SUID/SGID- aplikácie opúšťajú premennú prostredia LD_LIBRARY_PATH a umožňujú tak načítanie kódu tretích strán v kontexte procesu spusteného so zvýšenými privilégiami. Opravy, ktoré opravujú túto chybu zabezpečenia, sú dostupné pre vydania 6.5 и 6.6. Binárne záplaty (syspatch) pre platformy amd64, i386 a arm64 sú už vo výrobe a v čase zverejnenia tejto novinky by mali byť dostupné na stiahnutie.

Podstata problému: ld.so počas prevádzky najskôr vytiahne z prostredia hodnotu premennej LD_LIBRARY_PATH a pomocou funkcie _dl_split_path() ju zmení na pole reťazcov - ciest k adresárom. Ak sa neskôr ukáže, že aktuálny proces spúšťa aplikácia SUID/SGID, potom sa vytvorené pole a v skutočnosti aj premenná LD_LIBRARY_PATH vymaže. Zároveň, ak _dl_split_path() dôjde pamäť (čo je ťažké kvôli explicitnému 256 kB limitu na veľkosť premenných prostredia, ale teoreticky možné), potom premenná _dl_libpath dostane hodnotu NULL a následné kontroly hodnota tejto premennej si vynúti preskočenie volania _dl_unsetenv("LD_LIBRARY_PATH").

Zraniteľnosť nájdená odborníkmi Qualy's, rovnako ako aj niekoľko predtým odhalených problémy. Bezpečnostní výskumníci, ktorí identifikovali zraniteľnosť, zaznamenali, ako rýchlo bol problém vyriešený: oprava bola pripravená a aktualizácie boli vydané do troch hodín po tom, čo projekt OpenBSD dostal upozornenie.

Doplnenie: Problému bolo priradené číslo CVE-2019 19726,. Vyrobené na oss-security mailing listu oficiálne oznámenievrátane prototypu exploitu bežiaceho na architektúrach OpenBSD 6.6, 6.5, 6.2 a 6.1
amd64 a i386 (využitie je možné prispôsobiť pre iné architektúry).
Problém je zneužiteľný v predvolenej inštalácii a umožňuje neprivilegovanému lokálnemu používateľovi spustiť kód ako root prostredníctvom nahradenia knižnice pri spustení pomocných programov chpass alebo passwd suid. Aby ste vytvorili podmienky nedostatku pamäte potrebné na prevádzku, nastavte limit RLIMIT_DATA cez setrlimit.

Zdroj: opennet.ru

Pridať komentár