Dynamický nakladač
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
Doplnění: Problému bylo přiděleno číslo
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