Kipakiaji chenye nguvu
Kiini cha tatizo: wakati wa operesheni, ld.so kwanza hutoa thamani ya kutofautiana kwa LD_LIBRARY_PATH kutoka kwa mazingira na, kwa kutumia _dl_split_path() kazi ya kukokotoa, huigeuza kuwa safu ya masharti - njia za saraka. Ikiwa baadaye inageuka kuwa mchakato wa sasa umeanza na programu ya SUID / SGID, basi safu iliyoundwa na, kwa kweli, kutofautiana kwa LD_LIBRARY_PATH kunafutwa. Wakati huo huo, ikiwa _dl_split_path() itaisha kumbukumbu (ambayo ni ngumu kwa sababu ya kikomo cha kB 256 juu ya saizi ya anuwai ya mazingira, lakini kinadharia inawezekana), basi utofauti wa _dl_libpath utapokea thamani NULL, na ukaguzi unaofuata wa thamani ya tofauti hii italazimisha kuruka simu hadi _dl_unsetenv("LD_LIBRARY_PATH").
Udhaifu unaopatikana na wataalam
Nyongeza: Tatizo limepewa nambari
amd64 na i386 (unyonyaji unaweza kubadilishwa kwa usanifu mwingine).
Suala hili linaweza kutumiwa katika usakinishaji chaguo-msingi na huruhusu mtumiaji wa ndani asiye na haki kutekeleza msimbo kama mzizi kupitia uingizwaji wa maktaba wakati wa kuendesha huduma za chpass au passwd suid. Ili kuunda hali ya kumbukumbu ya chini inayohitajika kwa uendeshaji, weka kikomo cha RLIMIT_DATA kupitia setrlimit.
Chanzo: opennet.ru