Rust စံစာကြည့်တိုက်ရှိ အားနည်းချက်

std::fs::remove_dir_all() လုပ်ဆောင်ချက်ရှိ ပြိုင်ဆိုင်မှုအခြေအနေကြောင့် Rust စံပြစာကြည့်တိုက်တွင် အားနည်းချက်တစ်ခု (CVE-2022-21658) ကို တွေ့ရှိခဲ့သည်။ အကယ်၍ အခွင့်ထူးခံ အပလီကေးရှင်းတစ်ခုရှိ ယာယီဖိုင်များကို ဖျက်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုပါက၊ တိုက်ခိုက်သူသည် ပုံမှန်အားဖြင့် ဖျက်ရန်ဝင်ရောက်ခွင့်မရှိသော ပုံမှန်မဟုတ်သော စနစ်ဖိုင်များနှင့် လမ်းညွှန်များကို တိုက်ခိုက်သူမှ ဖျက်ပစ်နိုင်သည်။

လမ်းကြောင်းများကို ထပ်ခါတလဲလဲ မဖျက်မီ သင်္ကေတလင့်ခ်များကို စစ်ဆေးခြင်း မမှန်ကန်ခြင်းကြောင့် အားနည်းချက်ဖြစ်ရခြင်း ဖြစ်သည်။ symlinks များကို လိုက်နာခြင်းမှ တားဆီးမည့်အစား၊ remove_dir_all() သည် ဖိုင်သည် symlink ဖြစ်မဖြစ် စစ်ဆေးရန် ဦးစွာ စစ်ဆေးပါသည်။ လင့်ခ်တစ်ခုကို သတ်မှတ်ပါက၊ ၎င်းကို ဖိုင်တစ်ခုအဖြစ် ဖျက်လိုက်ပြီး၊ ၎င်းသည် လမ်းညွှန်တစ်ခုဖြစ်ပါက၊ ထို့နောက် ပြန်ကောက်ရသည့် အကြောင်းအရာကို ဖယ်ရှားခြင်းလုပ်ငန်းကို ခေါ်သည်။ ပြဿနာမှာ စစ်ဆေးခြင်းနှင့် ဖျက်ခြင်းစတင်ခြင်းကြားတွင် အနည်းငယ်နှောင့်နှေးမှုရှိနေခြင်းပင်ဖြစ်သည်။

စစ်ဆေးမှုကို လုပ်ဆောင်ပြီးဖြစ်သော်လည်း ဖျက်ခြင်းအတွက် စာရင်းပေးသွင်းခြင်းလုပ်ငန်းကို မစသေးချိန်တွင်၊ တိုက်ခိုက်သူသည် လမ်းညွှန်ကို ယာယီဖိုင်များဖြင့် သင်္ကေတလင့်ခ်ဖြင့် အစားထိုးနိုင်သည်။ အချိန်မှန် ထိမိပါက၊ remove_dir_all() လုပ်ဆောင်ချက်သည် သင်္ကေတလင့်ခ်ကို လမ်းညွှန်တစ်ခုအဖြစ် သတ်မှတ်ပြီး လင့်ခ်ညွှန်သည့် အကြောင်းအရာကို စတင်ဖယ်ရှားမည်ဖြစ်သည်။ တိုက်ခိုက်မှု၏အောင်မြင်မှုသည် လမ်းညွှန်ကို အစားထိုးရန် ရွေးချယ်ထားသည့်အချိန်၏ တိကျမှုနှင့် ပထမအကြိမ် မှန်ကန်သည့်အချိန်ကို ခေါက်ခြင်းအပေါ်တွင် မူတည်နေသော်လည်း လက်တွေ့စမ်းသပ်မှုများအတွင်း သုတေသီများသည် အသုံးချမှုကို အကောင်အထည်ဖော်ပြီးနောက် ထပ်ခါတလဲလဲ အောင်မြင်သော တိုက်ခိုက်မှုကို ရရှိနိုင်ခဲ့သည်။ စက္ကန့်အနည်းငယ်

1.0.0 မှ 1.58.0 အထိပါဝင်သော Rust ဗားရှင်းအားလုံးသည် ထိခိုက်ပါသည်။ ပြဿနာကို patch form ဖြင့် ဖြေရှင်းပြီးပါပြီ (ပြင်ဆင်မှုကို နာရီအနည်းငယ်အတွင်း မျှော်လင့်ထားသည့် 1.58.1 ထုတ်ဝေမှုတွင် ထည့်သွင်းပါမည်)။ ဤစာမျက်နှာများတွင် ဖြန့်ဝေမှုများတွင် အားနည်းချက်ကို ဖယ်ရှားနိုင်သည်- Debian၊ RHEL၊ SUSE၊ Fedora၊ Ubuntu၊ Arch, FreeBSD။ မြင့်မားသောအခွင့်အရေးများဖြင့် လုပ်ဆောင်နေသည့် Rust ပရိုဂရမ်များ၏ အသုံးပြုသူအားလုံးကို ဖယ်ရှားရန်နှင့် remove_dir_all လုပ်ဆောင်ချက်ကို အသုံးပြုသူများသည် Rust ဗားရှင်း 1.58.1 သို့ အမြန်မွမ်းမံရန် အကြံပြုထားသည်။ ထွက်လာသော patch သည် စနစ်အားလုံးတွင် ပြဿနာကို မဖြေရှင်းနိုင်သည်မှာ စိတ်ဝင်စားစရာကောင်းသည်မှာ၊ ဥပမာ၊ REDOX OS နှင့် 10.10 (Yosemite မတိုင်မီ macOS ဗားရှင်း) တွင်၊ O_NOFOLLOW အလံမရှိခြင်းကြောင့် အားနည်းချက်ကို ပိတ်ဆို့မထားပါ၊၊ လင့်များ

source: opennet.ru

မှတ်ချက် Add