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

JIT ဖြင့် အထူး virtual machine တစ်ခုတွင် Linux kernel အတွင်းရှိ handlers များကို run နိုင်စေမည့် eBPF စနစ်ခွဲတွင် အားနည်းချက်အသစ်နှစ်ခုကို ဖော်ထုတ်ထားသည်။ အားနည်းချက်နှစ်ခုစလုံးသည် သီးခြား eBPF virtual machine အပြင်၊ kernel rights ဖြင့် သင့်ကုဒ်ကို လုပ်ဆောင်နိုင်စေသည်။ Pwn2Own ပြိုင်ပွဲကို ဦးဆောင်သည့် Zero Day Initiative အဖွဲ့မှ ထုတ်ဝေခဲ့သည့် ပြဿနာများနှင့် ပတ်သက်၍ ယခုနှစ်အတွင်း Ubuntu Linux တွင် ယခင်က အမည်မသိ အားနည်းချက်များကို အသုံးပြုထားသည့် တိုက်ခိုက်မှု သုံးခုကို ပြသခဲ့သည် (eBPF ရှိ အားနည်းချက်များသည် ဤတိုက်ခိုက်မှုများနှင့် ဆက်စပ်မှုရှိမရှိ) .

  • CVE-2021-3490 - eBPF ALU32 တွင် bitwise AND, OR, နှင့် XOR လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သည့်အခါ အားနည်းချက်မှာ 32-bit အပြင်-ဘောင်များ စစ်ဆေးခြင်း မရှိခြင်းကြောင့် ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ တိုက်ခိုက်သူသည် ခွဲဝေပေးထားသည့်ကြားခံ၏ဘောင်အပြင်ဘက်တွင် ဒေတာများကို ဖတ်ရန်နှင့် ရေးရန် ဤအမှားကို အခွင့်ကောင်းယူနိုင်သည်။ XOR လုပ်ဆောင်ချက်များနှင့် ပြဿနာသည် kernel ဗားရှင်း 5.7-rc1 မှ စတင်ကာ AND နှင့် OR - 5.10-rc1 မှ စတင်သည်။
  • CVE-2021-3489 - ကွင်းဆက်ကြားခံကို အကောင်အထည်ဖော်ရာတွင် အမှားအယွင်းတစ်ခုကြောင့် ဖြစ်ရခြင်းဖြစ်ပြီး bpf_ringbuf_reserve လုပ်ဆောင်ချက်သည် ခွဲဝေချထားပေးသော မမ်မိုရီဧရိယာ၏ အရွယ်အစားသည် အမှန်တကယ်အရွယ်အစားထက် လျော့နည်းနိုင်ကြောင်း ဖြစ်နိုင်ခြေကို စစ်ဆေးခြင်းမရှိသောကြောင့်ဖြစ်သည်။ ringbuf ၏ 5.8-rc1 ထွက်ရှိကတည်းက ပြဿနာပေါ်လာသည်။

ဖြန့်ဝေမှုများတွင် ဖာထေးခြင်းဆိုင်ရာ အားနည်းချက်များ၏ အခြေအနေကို ဤစာမျက်နှာများတွင် ခြေရာခံနိုင်သည်- Ubuntu၊ Debian၊ RHEL၊ Fedora၊ SUSE၊ Arch)။ ပြင်ဆင်မှုများကို ဖာထေးမှုများ (CVE-2021-3489၊ CVE-2021-3490) အဖြစ်လည်း ရရှိနိုင်ပါသည်။ ပြဿနာကို အသုံးချနိုင်သည်ဖြစ်စေ eBPF စနစ်ခေါ်ဆိုမှုကို အသုံးပြုသူမှ အသုံးပြုခွင့်ရှိမရှိပေါ်တွင် မူတည်သည်။ ဥပမာအားဖြင့်၊ RHEL ရှိ ပုံသေဖွဲ့စည်းပုံတွင်၊ အားနည်းချက်ကို အသုံးချခြင်းသည် အသုံးပြုသူတွင် CAP_SYS_ADMIN လုပ်ပိုင်ခွင့်ရှိရန် လိုအပ်သည်။

သီးခြားအားဖြင့်၊ ဒေသခံအသုံးပြုသူတစ်ဦးအား ၎င်းတို့၏အခွင့်ထူးများကို အမြစ်အဆင့်အထိ မြှင့်တင်ခွင့်ပြုသည့် Linux kernel အတွင်းရှိ အခြားအားနည်းချက်တစ်ခုဖြစ်သော CVE-2021-32606 ကို ကျွန်ုပ်တို့ မှတ်သားနိုင်ပါသည်။ Linux kernel 5.11 ကတည်းက ပြဿနာသည် ထင်ရှားခဲ့ပြီး isotp_setsockopt() လုပ်ဆောင်ချက်တွင် သင့်လျော်သောသော့ခလောက်များကို မသတ်မှတ်ခြင်းကြောင့် socket binding parameters များကို ပြောင်းလဲနိုင်စေသည့် CAN ISOTP ပရိုတိုကောကို အကောင်အထည်ဖော်ရာတွင် ပြိုင်ဆိုင်မှုအခြေအနေကြောင့် ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ CAN_ISOTP_SF_BROADCAST အလံကို လုပ်ဆောင်သောအခါ။

ISOTP socket ကို ပိတ်ပြီးနောက်၊ လက်ခံသူ socket နှင့် ချိတ်ဆက်မှုသည် အကျိုးသက်ရောက်မှုရှိနေဆဲဖြစ်ပြီး ၎င်းတို့နှင့် ဆက်စပ်နေသော မမ်မိုရီကို လွတ်သွားပြီးနောက် ၎င်းတို့နှင့် ဆက်စပ်နေသော မမ်မိုရီကို ဖယ်ရှားပြီးနောက် socket နှင့် ဆက်စပ်သော ဖွဲ့စည်းပုံများကို ဆက်လက်အသုံးပြုနိုင်ပါသည် ( isotp_sock တည်ဆောက်ပုံသို့ ခေါ်ဆိုမှုကြောင့် အသုံးပြုပြီးနောက် အခမဲ့ အသုံးပြုခြင်း isotp_rcv() ဟုခေါ်သောအခါ) လွတ်မြောက်ပြီးဖြစ်သည်။ ဒေတာခြယ်လှယ်ခြင်းမှတစ်ဆင့်၊ သင်သည် ညွှန်ပြချက်ကို sk_error_report() လုပ်ဆောင်ချက်သို့ အစားထိုးနိုင်ပြီး kernel အဆင့်တွင် သင့်ကုဒ်ကို လုပ်ဆောင်နိုင်သည်။

source: opennet.ru

မှတ်ချက် Add