Dynamyske loader
De essinsje fan it probleem: tidens operaasje ekstrahearret ld.so earst de wearde fan 'e fariabele LD_LIBRARY_PATH út 'e omjouwing en, mei de funksje _dl_split_path() feroaret it yn in array fan snaren - paden nei mappen. As letter bliken docht dat it aktuele proses wurdt begûn troch in SUID/SGID-applikaasje, dan wurde de oanmakke array en yn feite de fariabele LD_LIBRARY_PATH wiske. Tagelyk, as _dl_split_path() sûnder ûnthâld rint (wat dreech is troch de eksplisite 256 kB limyt op 'e grutte fan omjouwingsfariabelen, mar teoretysk mooglik), dan sil de fariabele _dl_libpath de wearde NULL ûntfange, en de folgjende kontrôles fan de wearde fan dizze fariabele sil twinge om de oprop nei _dl_unsetenv ("LD_LIBRARY_PATH") oer te slaan.
Kwetsberens fûn troch saakkundigen
Tafoeging: It probleem is in nûmer tawiisd
amd64 en i386 (de eksploitaasje kin oanpast wurde foar oare arsjitektuer).
It probleem is te eksploitearjen yn 'e standertynstallaasje en lit in unprivilegearre lokale brûker koade útfiere as root fia biblioteekferfanging by it útfieren fan de chpass- of passwd suid-utilities. Om de betingsten mei leech ûnthâld te meitsjen dy't nedich binne foar operaasje, set de limyt fan RLIMIT_DATA fia setrlimit.
Boarne: opennet.ru