Dinamikus rakodó
A probléma lényege: működés közben az ld.so először kivonja a környezetből az LD_LIBRARY_PATH változó értékét, és a _dl_split_path() függvény segítségével karakterláncok tömbjévé alakítja - könyvtárak elérési útjai. Ha később kiderül, hogy az aktuális folyamatot egy SUID/SGID alkalmazás indította el, akkor a létrehozott tömb és valójában az LD_LIBRARY_PATH változó törlődik. Ugyanakkor, ha a _dl_split_path() kifogy a memóriából (ami nehéz a környezeti változók méretének 256 kB-os explicit korlátja miatt, de elméletileg lehetséges), akkor a _dl_libpath változó NULL értéket kap, és ezt követően ellenőrizni kell. Ennek a változónak az értékéből kihagyja a _dl_unsetenv("LD_LIBRARY_PATH") hívást.
Sebezhetőséget találtak a szakértők
Kiegészítés: A probléma számot kapott
amd64 és i386 (az exploit más architektúrákhoz is adaptálható).
A probléma az alapértelmezett telepítésben kihasználható, és lehetővé teszi a jogosulatlan helyi felhasználók számára, hogy a chpass vagy passwd suid segédprogramok futtatásakor könyvtárhelyettesítésen keresztül rootként hajtsanak végre kódot. A működéshez szükséges kevés memória feltételeinek megteremtéséhez állítsa be az RLIMIT_DATA korlátot a setrlimit segítségével.
Forrás: opennet.ru