Dynamic loader
ပြဿနာ၏အနှစ်သာရ- လည်ပတ်နေစဉ်အတွင်း၊ ld.so သည် ပတ်ဝန်းကျင်မှ LD_LIBRARY_PATH variable ၏တန်ဖိုးကို ဦးစွာထုတ်နုတ်ပြီး _dl_split_path() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ ၎င်းကို လိုင်းများ-လမ်းကြောင်းများဆီသို့ ပြောင်းလဲပေးသည်။ နောက်ပိုင်းတွင် လက်ရှိလုပ်ငန်းစဉ်ကို SUID/SGID အပလီကေးရှင်းတစ်ခုမှ စတင်ကြောင်း သိရှိရပါက၊ ဖန်တီးထားသော ခင်းကျင်းပြီး အမှန်တကယ် LD_LIBRARY_PATH ကိန်းရှင်ကို ရှင်းလင်းသွားမည်ဖြစ်သည်။ တစ်ချိန်တည်းမှာပင်၊ _dl_split_path() သည် မမ်မိုရီကုန်သွားပါက (ပတ်ဝန်းကျင် ကိန်းရှင်များ၏ အရွယ်အစားတွင် 256 kB ကန့်သတ်ချက်ကြောင့် ခက်ခဲသော်လည်း သီအိုရီအရ ဖြစ်နိုင်သည်)၊ ထို့နောက် _dl_libpath variable သည် တန်ဖိုး NULL ကို လက်ခံရရှိမည်ဖြစ်ပြီး၊ နောက်ဆက်တွဲ စစ်ဆေးခြင်း ဤကိန်းရှင်၏တန်ဖိုးသည် _dl_unsetenv("LD_LIBRARY_PATH") သို့ ခေါ်ဆိုမှုကို ကျော်သွားစေသည်။
ကျွမ်းကျင်သူများက တွေ့ရှိသော အားနည်းချက်
ထပ်လောင်း- ပြဿနာကို နံပါတ်တစ်ခု သတ်မှတ်ပေးလိုက်ပါပြီ။
amd64 နှင့် i386 ( exploit ကို အခြားသော ဗိသုကာလက်ရာများအတွက် လိုက်လျောညီထွေဖြစ်စေနိုင်သည်)။
ပြဿနာကို ပုံသေထည့်သွင်းမှုတွင် အသုံးချနိုင်ပြီး chpass သို့မဟုတ် passwd suid utilities ကိုအသုံးပြုသောအခါတွင် စာကြည့်တိုက်အစားထိုးခြင်းဖြင့် ကုဒ်ကို root အဖြစ် root အဖြစ် execute လုပ်ရန် ခွင့်ပြုသည်။ လုပ်ဆောင်ချက်အတွက် လိုအပ်သော မှတ်ဉာဏ်နည်းသော အခြေအနေများကို ဖန်တီးရန်၊ setrlimit မှတစ်ဆင့် RLIMIT_DATA ကန့်သတ်ချက်ကို သတ်မှတ်ပါ။
source: opennet.ru