Linux kernel အဆင့်တွင် code execution ကိုခွင့်ပြုသည့် eBPF စနစ်ခွဲရှိ အားနည်းချက်

အားနည်းချက်တစ်ခု (CVE-2021-4204) ကို eBPF စနစ်ခွဲတွင် ဖော်ထုတ်ထားပြီး၊ ၎င်းသည် သင့်အား JIT ဖြင့် အထူး virtual machine တစ်ခုတွင် Linux kernel အတွင်းရှိ handlers များကို run နိုင်စေကာ၊ ဒေသဆိုင်ရာအခွင့်ထူးမခံရသေးသောအသုံးပြုသူတစ်ဦးအား အခွင့်ထူးတိုးမြှင့်မှုရရှိစေရန်နှင့် ၎င်းတို့၏ကုဒ်ကို လုပ်ဆောင်နိုင်စေမည်ဖြစ်သည်။ Linux kernel အဆင့်။ Linux kernel 5.8 ကတည်းက ပြဿနာပေါ်လာပြီး မပြင်ဆင်ရသေးပါ (ထွက်ရှိ 5.16 အပါအဝင်)။ ဖြန့်ဝေမှုများတွင် ပြဿနာကို ဖြေရှင်းရန် အပ်ဒိတ်များ ထုတ်ပေးနေသည့် အခြေအနေကို ဤစာမျက်နှာများတွင် ခြေရာခံနိုင်သည်- Debian၊ RHEL၊ SUSE၊ Fedora၊ Ubuntu၊ Arch။ ဇန်နဝါရီလ 18 ရက်နေ့တွင် ထုတ်ဝေရန် စီစဉ်ထားသည့် အလုပ်လုပ်သော အမြတ်ထုတ်မှုတစ်ခုကို ဖန်တီးလိုက်ကြောင်း ကြေငြာထားသည် (အသုံးပြုသူများနှင့် ဆော့ဖ်ဝဲရေးသားသူများကို အားနည်းချက်ကို ပြင်ဆင်ရန် တစ်ပတ်ခန့် အချိန်ပေးခဲ့ရသည်)။

အားနည်းချက်မှာ eBPF ပရိုဂရမ်များကို မှန်ကန်စွာအတည်ပြုခြင်းမှ ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ eBPF စနစ်ခွဲသည် အရန်လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးသည်၊ ၎င်းကို အထူးအတည်ပြုသူမှ မှန်ကန်သောအသုံးပြုမှုကို ပေးသည်။ အချို့သောလုပ်ဆောင်ချက်များသည် အကြောင်းပြချက်တစ်ခုအနေဖြင့် PTR_TO_MEM တန်ဖိုးကို ဖြတ်သန်းရန်လိုအပ်ပြီး ဖြစ်နိုင်ချေရှိသော ကြားခံအလျှံပယ်များကို တားဆီးရန်၊ အတည်ပြုသူသည် အကြောင်းပြချက်နှင့်ဆက်စပ်နေသော မမ်မိုရီ၏အရွယ်အစားကို သိရပါမည်။ bpf_ringbuf_submit နှင့် bpf_ringbuf_discard လုပ်ဆောင်ချက်များအတွက်၊ အထူးဒီဇိုင်းထုတ်ထားသော eBPF ကုဒ်ကို လုပ်ဆောင်သောအခါတွင် အထူးဒီဇိုင်းထုတ်ထားသော eBPF ကုဒ်ကို ကျော်လွန်၍ မမ်မိုရီဧရိယာများကို ကျော်လွန်ရေးရန်အတွက် အသုံးပြုနိုင်သည့် လွှဲပြောင်းထားသော မမ်မိုရီ၏ အရွယ်အစားပေါ်ရှိ ဒေတာကို အတည်ပြုသူထံ အစီရင်ခံမထားပါ။

တိုက်ခိုက်မှုတစ်ခုလုပ်ဆောင်ရန်၊ အသုံးပြုသူသည် ၎င်း၏ကိုယ်ပိုင် BPF ပရိုဂရမ်ကို တင်နိုင်ရမည်ဖြစ်ပြီး မကြာသေးမီက Linux ဖြန့်ဝေမှုများသည် ဤစွမ်းရည်ကို မူရင်းအတိုင်း ပိတ်ဆို့ထားပါသည် (ယခုအခါ eBPF သို့ အခွင့်ထူးမခံရသေးသောဝင်ရောက်ခွင့်အပါအဝင် kernel ကိုယ်တိုင်က၊ ယခုထွက်ရှိ 5.16 မှစတင်၍ ပုံမှန်အားဖြင့် တားမြစ်ထားသည်။ ဥပမာအားဖြင့်၊ အားနည်းချက်ကို Ubuntu 20.04 LTS ရှိ ပုံသေဖွဲ့စည်းပုံတွင် အသုံးချနိုင်သော်လည်း Ubuntu 22.04-dev၊ Debian 11၊ openSUSE 15.3၊ RHEL 8.5၊ SUSE 15-SP4 နှင့် Fedora 33 ပတ်ဝန်းကျင်များတွင် အက်ဒမင်သတ်မှတ်ထားမှသာ ပေါ်လာမည်ဖြစ်သည်။ kernel.unprivileged_bpf_disabled parameter သည် 0။ အားနည်းချက်ကို ပိတ်ဆို့ခြင်းအတွက် ဖြေရှင်းနည်းတစ်ခုအနေဖြင့် “sysctl -w kernel.unprivileged_bpf_disabled=1” ဟူသော ညွှန်ကြားချက်ဖြင့် အခွင့်ထူးမခံသောအသုံးပြုသူများမှ BPF ပရိုဂရမ်များ၏ လုပ်ဆောင်မှုကို တားဆီးနိုင်သည်။

source: opennet.ru

မှတ်ချက် Add