Dynamický načítač , ktorý je súčasťou OpenBSD, za určitých podmienok môže pre -aplikácie nechať premennú prostredia LD_LIBRARY_PATH a tým umožniť načítanie externého kódu v kontexte procesu, ktorý sa vykonáva s zvýšenými oprávneniami. Opravy na odstránenie zraniteľnosti sú dostupné pre vydania a . Binarne opravy () pre platformy amd64, i386 a arm64 už boli nasadené do výroby a mali by byť k dispozícii na stiahnutie v čase zverejnenia tejto správy.
Podstata problému: Počas práce ld.so najprv vy extrahuje z prostredia hodnotu premennej LD_LIBRARY_PATH, pomocou funkcie _dl_split_path() ju transformuje na pole reťazcov — ciest k adresárom. Ak sa neskôr zistí, že aktuálny proces je spustený SUID/SGID-aplikáciou, tak vytvorené pole a vlastne aj premenná LD_LIBRARY_PATH sa vyčistia. Pri tom, ak počas práce _dl_split_path() narazí na nedostatok pamäte (čo je ťažké kvôli existujúcim explicitným obmedzeniam na veľkosť premenných prostredia na 256 kB, ale teoreticky možné), tak premenná _dl_libpath získa hodnotu NULL a následná kontrola hodnoty tejto premennej spôsobí, že sa vynechá volanie _dl_unsetenv(„LD_LIBRARY_PATH“).
Zraniteľnosť bola nájdená odborníkmi , ako aj problémov. Výskumníci v oblasti bezpečnosti, ktorí zistili zraniteľnosť, si všimli rýchlosť riešenia problému: oprava bola pripravená a aktualizácie vydané do troch hodín po prijatí oznámenia projektom OpenBSD.
Doplnok: Problému bol priradený číslo . V zozname distribúcie oss-security bol vydaný , ktoré obsahuje prototyp exploit, ktorý funguje v OpenBSD 6.6, 6.5, 6.2 a 6.1 na architektúrach
amd64 a i386 (exploit môže byť prispôsobený aj pre iné architektúry).
Problém je zneužiteľný v predvolenej inštalácii a umožňuje neoprávnenému lokálnemu používateľovi spustiť kód s právami root prostredníctvom substitúcie knižnice pri spúšťaní suid-nástrojov chpass alebo passwd. Na vytvorenie podmienok potrebných na zneužitie nedostatku pamäte sa používa nastavenie obmedzenia RLIMIT_DATA pomocou setrlimit.
Zdroj: opennet.ru
