Dinamički utovarivač
Suština problema: tijekom rada ld.so prvo iz okruženja izvlači vrijednost varijable LD_LIBRARY_PATH i pomoću funkcije _dl_split_path() je pretvara u niz stringova – putova do direktorija. Ako se kasnije ispostavi da je trenutni proces pokrenula SUID/SGID aplikacija, tada se kreirani niz i, zapravo, varijabla LD_LIBRARY_PATH brišu. U isto vrijeme, ako _dl_split_path() ostane bez memorije (što je teško zbog eksplicitnog ograničenja od 256 kB na veličinu varijabli okruženja, ali teoretski moguće), tada će varijabla _dl_libpath dobiti vrijednost NULL, a naknadne provjere vrijednost ove varijable će prisilno preskočiti poziv na _dl_unsetenv("LD_LIBRARY_PATH").
Ranjivost koju su otkrili stručnjaci
Dodatak: problemu je dodijeljen broj
amd64 i i386 (iskorištavanje se može prilagoditi za druge arhitekture).
Problem se može iskoristiti u zadanoj instalaciji i omogućuje nepovlaštenom lokalnom korisniku da izvrši kod kao root putem zamjene biblioteke prilikom pokretanja uslužnih programa chpass ili passwd suid. Za stvaranje uvjeta niske memorije potrebne za rad, postavite ograničenje RLIMIT_DATA preko setrlimit.
Izvor: opennet.ru