ဖြန့်ဖြူးမှုရဲ့ package database မှာ Ubuntu အောက်တိုဘာလ ၁၅ ရက်နေ့တွင် ထွက်ရှိရန် စီစဉ်ထားသော 26.10 သည် Rust ဘာသာစကားဖြင့် ရေးသားထားသော uutils coreutils (Rust Coreutils) toolkit သို့ လုံးဝကူးပြောင်းခြင်း ဖြစ်သည်။ Rust Coreutils utilities များသည် cp၊ mv နှင့် rm utilities များ အပါအဝင် GNU Coreutils package ၏ အစိတ်အပိုင်းအားလုံးကို လုံးဝ အစားထိုးလိုက်ပါသည်။ Ubuntu ၂၆.၀၄ ကို GNU Coreutils ၏ မျိုးကွဲတစ်ခုတွင် ထောက်ပံ့ပေးခဲ့သည်။
rust-coreutils package ကို မူလက ထုတ်ဝေမှုတွင် default အနေဖြင့် ထည့်သွင်းထားသည်။ Ubuntu ၂၅.၁၀၊ ဒါပေမယ့် LTS ဌာနခွဲမှာ Ubuntu ဧပြီလ ၂၆ ရက်နေ့တွင် GNU Coreutils suite မှ cp၊ mv နှင့် rm utilities များကို ပြန်လည်ရုပ်သိမ်းခဲ့သည်။ Rust Coreutils codebase ကို audit လုပ်စဉ်အတွင်း ရှာဖွေတွေ့ရှိခဲ့သော လုံခြုံရေးပြဿနာများကြောင့် ဤရွေးချယ်မှုများကို ပြန်လည်ရုပ်သိမ်းခဲ့သည်။ Rust Coreutils ရှိ အားနည်းချက်အများစုသည် race အခြေအနေများကြောင့် ဖြစ်ပေါ်လာပြီး အချက်အလက်များကို အတည်ပြုပြီးနောက် operation မလုပ်ဆောင်မီ data များကို ပြင်ဆင်နိုင်စေသည် (TOCTOU — Time-Of-Check-To-Time-Of-Use)။ အခြားအရာများအပြင်၊ ထိုကဲ့သို့သော အားနည်းချက်များသည် ဖိုင်တစ်ခုကို စစ်ဆေးမှုပြီးစီးခြင်းနှင့် operation စတင်ခြင်းကြားတွင် symbolic link ဖြင့် အစားထိုးနိုင်စေပါသည်။
root privileges နဲ့ run တဲ့ system script တွေမှာ cp, mv, နဲ့ rm utilities တွေကိုသုံးတဲ့အခါ symbolic link ကိုအစားထိုးခြင်းအားဖြင့် arbitrary file တွေကို copy ကူးတာ၊ overwrite လုပ်တာ၊ ဒါမှမဟုတ် delete လုပ်တာတွေကို ပြုလုပ်နိုင်ပါတယ်။ ဥပမာအားဖြင့်၊ directory တွေကို recursively delete လုပ်တဲ့အခါ rm utility က directory အားလုံးကို scan ဖတ်ပြီးရင် rmdir() function ကိုခေါ်ပြီး reverse order နဲ့ အစဉ်လိုက် delete လုပ်ပါတယ်။ parent directory အတွက် symbolic link ကို scan ဖတ်ပြီးတာနဲ့ သူ့ရဲ့ child directory တွေကို scan မလုပ်ခင်မှာ /etc/cron.daily/apport cron script ကို နေ့စဉ် run တဲ့အခါ system ပေါ်က directory တိုင်းကို ဖျက်နိုင်ပါတယ်။ root အနေနဲ့ run တဲ့အခါ script က /var/crash directory ရဲ့ content တွေကို recursively delete လုပ်ပါတယ်၊ system ပေါ်က user အားလုံး write လုပ်နိုင်ပါတယ်။
source: opennet.ru
