Динамикалық жүктеуші
Мәселенің мәні: жұмыс кезінде ld.so алдымен ортадан LD_LIBRARY_PATH айнымалысының мәнін шығарып алады және _dl_split_path() функциясын пайдаланып, оны жолдар массивіне - каталогтарға жолдарға айналдырады. Ағымдағы процесс SUID/SGID қолданбасы арқылы басталғаны кейінірек анықталса, жасалған массив және шын мәнінде, LD_LIBRARY_PATH айнымалысы тазаланады. Сонымен қатар, егер _dl_split_path() жады таусылып қалса (бұл орта айнымалыларының өлшеміне 256 кБ анық шектеуге байланысты қиын, бірақ теориялық мүмкін), онда _dl_libpath айнымалысы NULL мәнін алады және одан кейінгі тексеру осы айнымалы мәннің мәні _dl_unsetenv("LD_LIBRARY_PATH") шақыруды өткізіп жіберуге әкеледі.
Сарапшылар анықтаған осалдық
Қосымша: мәселеге нөмір берілді
amd64 және i386 (эксплейт басқа архитектуралар үшін бейімделуі мүмкін).
Мәселе әдепкі орнатуда пайдаланылады және артықшылығы жоқ жергілікті пайдаланушыға chpass немесе passwd suid утилиталарын іске қосқан кезде кітапхананы ауыстыру арқылы кодты түбір ретінде орындауға мүмкіндік береді. Жұмыс істеуге қажетті жад көлемі аз жағдайларды жасау үшін setrlimit арқылы RLIMIT_DATA шегін орнатыңыз.
Ақпарат көзі: opennet.ru