Dynamische lader
De essentie van het probleem: tijdens de werking extraheert ld.so eerst de waarde van de variabele LD_LIBRARY_PATH uit de omgeving en verandert deze, met behulp van de functie _dl_split_path(), in een array van strings - paden naar mappen. Als later blijkt dat het huidige proces wordt gestart door een SUID/SGID-applicatie, worden de gemaakte array en in feite de variabele LD_LIBRARY_PATH gewist. Tegelijkertijd, als _dl_split_path() onvoldoende geheugen heeft (wat moeilijk is vanwege de expliciete limiet van 256 kB op de grootte van omgevingsvariabelen, maar theoretisch mogelijk), dan krijgt de variabele _dl_libpath de waarde NULL, en daaropvolgende controles van de waarde van deze variabele zorgt ervoor dat de aanroep naar _dl_unsetenv("LD_LIBRARY_PATH") wordt overgeslagen.
Kwetsbaarheid gevonden door experts
Toevoeging: Het probleem heeft een nummer gekregen
amd64 en i386 (de exploit kan worden aangepast voor andere architecturen).
Het probleem kan worden misbruikt in de standaardinstallatie en stelt een onbevoegde lokale gebruiker in staat code als root uit te voeren via bibliotheekvervanging bij het uitvoeren van de hulpprogramma's chpass of passwd suid. Om de omstandigheden met weinig geheugen te creëren die nodig zijn voor de werking, stelt u de RLIMIT_DATA-limiet in via setrlimit.
Bron: opennet.ru