Dynamický nakladač
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
Doplnenie: Problému bolo priradené číslo
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