Dynaaminen kuormaaja
Ongelman ydin: ld.so poimii toiminnan aikana ensin LD_LIBRARY_PATH-muuttujan arvon ympäristöstä ja muuntaa sen _dl_split_path()-funktion avulla joukoksi merkkijonoja - polkuja hakemistoihin. Jos myöhemmin käy ilmi, että SUID/SGID-sovellus käynnistää nykyisen prosessin, luotu taulukko ja itse asiassa LD_LIBRARY_PATH-muuttuja tyhjennetään. Samanaikaisesti, jos _dl_split_path()-muisti loppuu (mikä on vaikeaa ympäristömuuttujien nimenomaisen 256 kt:n rajoituksen vuoksi, mutta teoriassa mahdollista), _dl_libpath-muuttuja saa arvon NULL ja seuraavat tarkistukset tämän muuttujan arvo pakottaa ohittamaan kutsun _dl_unsetenv("LD_LIBRARY_PATH").
Asiantuntijat löysivät haavoittuvuuden
Lisäys: Ongelmalle on annettu numero
amd64 ja i386 (hyödynnettävyys voidaan sovittaa muihin arkkitehtuureihin).
Ongelma on hyödynnettävissä oletusasennuksessa ja sallii etuoikeutettoman paikallisen käyttäjän suorittaa koodin pääkäyttäjänä kirjaston korvaamisen kautta, kun chpass- tai passwd suid -apuohjelmat suoritetaan. Luodaksesi toiminnan edellyttämät vähän muistia, aseta RLIMIT_DATA-raja setrlimitin kautta.
Lähde: opennet.ru