Zranitelnost v ld.so OpenBSD

Dynamický nakladač ld. tak, který je součástí OpenBSD, může za určitých podmínek SUID/SGID- aplikace opouštějí proměnnou prostředí LD_LIBRARY_PATH a umožňují tak načítání kódu třetích stran v kontextu procesu běžícího se zvýšenými oprávněními. Pro vydání jsou k dispozici opravy, které tuto chybu zabezpečení opravují 6.5 и 6.6. Binární záplaty (syspatch) pro platformy amd64, i386 a arm64 jsou již ve výrobě a měly by být k dispozici ke stažení v době vydání této novinky.

Podstata problému: ld.so za provozu nejprve vytáhne z prostředí hodnotu proměnné LD_LIBRARY_PATH a pomocí funkce _dl_split_path() ji změní na pole řetězců - cest k adresářům. Pokud se později ukáže, že aktuální proces spouští aplikace SUID/SGID, pak se vytvořené pole a vlastně i proměnná LD_LIBRARY_PATH vymaže. Současně, pokud _dl_split_path() dojde paměť (což je obtížné kvůli explicitnímu limitu 256 kB na velikost proměnných prostředí, ale je to teoreticky možné), pak proměnná _dl_libpath obdrží hodnotu NULL a následná kontrola hodnoty této proměnné způsobí přeskočení volání _dl_unsetenv("LD_LIBRARY_PATH").

Zranitelnost nalezená odborníky Qualy's, stejně jako několik dříve odhalených problémy. Bezpečnostní výzkumníci, kteří zranitelnost identifikovali, zaznamenali, jak rychle byl problém vyřešen: oprava byla připravena a aktualizace byly vydány do tří hodin poté, co projekt OpenBSD obdržel upozornění.

Doplnění: Problému bylo přiděleno číslo CVE-2019-19726. Vyrobeno na oss-security mailing listu oficiální oznámení, včetně prototypu exploitu běžícího na architekturách OpenBSD 6.6, 6.5, 6.2 a 6.1
amd64 a i386 (využití lze upravit pro jiné architektury).
Problém je zneužitelný ve výchozí instalaci a umožňuje nepřivilegovanému místnímu uživateli spouštět kód jako root prostřednictvím substituce knihovny při spuštění obslužných programů chpass nebo passwd suid. Chcete-li vytvořit podmínky nedostatku paměti nutné pro provoz, nastavte limit RLIMIT_DATA pomocí setrlimit.

Zdroj: opennet.ru

Přidat komentář