Dynamický načítač , součást OpenBSD, může za určitých okolností pro -aplikace nechat proměnnou prostředí LD_LIBRARY_PATH a tím umožnit načíst cizí kód v kontextu procesu vykonávaného se zvýšenými privilegii. Opravy s řešením zranitelnosti jsou k dispozici pro verze a . Binární opravy () pro platformy amd64, i386 a arm64 již byly uvedeny do výroby a měly by být k dispozici ke stažení v okamžiku zveřejnění této zprávy.
Podstata problému: při práci ld.so nejprve vyextractuje z prostředí hodnotu proměnné LD_LIBRARY_PATH, pomocí funkce _dl_split_path() ji převede na pole řetězců — cest k adresářům. Pokud se později zjistí, že aktuální proces je spuštěn SUID/SGID-aplikací, vytvořené pole a ve skutečnosti i proměnná LD_LIBRARY_PATH se vyčistí. Přitom, pokud během práce _dl_split_path() narazí na nedostatek paměti (což je obtížné vzhledem k výslovnému omezení velikosti proměnných prostředí na 256 kB, ale teoreticky možné), získá proměnná _dl_libpath hodnotu NULL a následná kontrola této proměnné způsobí, že se vynechá volání _dl_unsetenv(„LD_LIBRARY_PATH“).
Zranitelnost byla nalezena odborníky , stejně jako problémů. Výzkumníci bezpečnosti, kteří zranitelnost odhalili, zdůraznili rychlost řešení problému: oprava byla připravena a aktualizace byla vydána během tří hodin po obdržení oznámení projektem OpenBSD.
Doplňující informace: problému byl přiřazen číslo . Na mailing listu oss-security bylo učiněno , zahrnující prototyp exploit, který funguje ve OpenBSD 6.6, 6.5, 6.2 a 6.1 na architekturách
amd64 a i386 (exploit může být přizpůsoben i pro jiné architektury).
Problém je zneužitelný v výchozí instalaci a umožňuje neprivilegovanému místnímu uživateli spustit kód s právy root prostřednictvím substituce knihovny při spuštění suid-nástrojů chpass nebo passwd. K vytvoření nezbytných podmínek pro zneužití se používá nastavení omezení RLIMIT_DATA prostřednictvím setrlimit.
Zdroj: opennet.ru
