UDP ပက်ကတ်ကို ပေးပို့ခြင်းဖြင့် အသုံးချခံရသော Toxcore တွင် Buffer ပြည့်လျှံနေပါသည်။

Toxcore၊ Tox P2P စာတိုပေးပို့ရေး ပရိုတိုကော၏ ကိုးကားချက် အကောင်အထည်ဖော်မှုတွင် အထူးပြုလုပ်ထားသော UDP ပက်ကတ်ကို လုပ်ဆောင်သည့်အခါ ကုဒ်လုပ်ဆောင်မှု စတင်နိုင်ချေ (CVE-2021-44847) တွင် အားနည်းချက်တစ်ခုရှိသည်။ UDP သယ်ယူပို့ဆောင်ရေးကို ပိတ်ထားခြင်းမရှိသော Toxcore-based အပလီကေးရှင်းအသုံးပြုသူအားလုံးသည် အားနည်းချက်ကြောင့် ထိခိုက်ပါသည်။ တိုက်ခိုက်ရန်အတွက်၊ သားကောင်၏ IP လိပ်စာ၊ ကွန်ရက်ဆိပ်ကမ်းနှင့် အများသူငှာ DHT သော့တို့ကို သိရှိထားသည့် UDP ပက်ကတ်ကို ပေးပို့ရန် လုံလောက်သည် (ဤအချက်အလက်များကို DHT တွင် အများသူငှာရရှိနိုင်သည်၊ ဆိုလိုသည်မှာ အသုံးပြုသူ သို့မဟုတ် DHT node များတွင် တိုက်ခိုက်ခံရနိုင်သည်)။

ပြဿနာကို toxcore ထုတ်ဝေမှုများ 0.1.9 မှ 0.2.12 တွင် ပါရှိပြီး ဗားရှင်း 0.2.13 တွင် ဖြေရှင်းထားသည်။ ကလိုင်းယင့်အပလီကေးရှင်းများကြားတွင်၊ qTox ပရောဂျက်ကသာ အားနည်းချက်ကို ဖယ်ရှားပေးသည့် အပ်ဒိတ်တစ်ခုကို ယခုအချိန်အထိ ထုတ်ပြန်ထားသည်။ လုံခြုံရေးဖြေရှင်းချက်အနေဖြင့်၊ သင်သည် TCP ပံ့ပိုးမှုကို ထိန်းသိမ်းထားစဉ် UDP ကို ​​ပိတ်နိုင်သည်။

အားနည်းချက်သည် handle_request() လုပ်ဆောင်ချက်ရှိ buffer overflow ကြောင့်ဖြစ်ပြီး၊ network packet တစ်ခုရှိ ဒေတာအရွယ်အစားကို မှားယွင်းစွာ တွက်ချက်မှုကြောင့် ဖြစ်ပေါ်လာပါသည်။ အတိအကျအားဖြင့်၊ ကုဒ်ဝှက်ထားသောဒေတာ၏အရှည်ကို "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE" ဟုသတ်မှတ်ထားသော macro CRYPTO_SIZE တွင် ဆုံးဖြတ်ခဲ့သည် မက်ခရိုတွင် ကွင်းကွင်းများမရှိခြင်းကြောင့်၊ တန်ဖိုးအားလုံး၏ပေါင်းလဒ်ကို နုတ်မည့်အစား ၎င်းသည် 1 ကို နုတ်ပြီး ကျန်အပိုင်းများကို ပေါင်းထည့်သည်။ ဥပမာအားဖြင့်၊ "အလျား - (1 + 32 * 2 + 24)" အစား၊ ကြားခံအရွယ်အစားကို "အလျား - 1 + 32 * 2 + 24" အဖြစ် တွက်ချက်ထားသောကြောင့် ကြားခံနယ်နိမိတ်ကိုကျော်လွန်၍ stack ပေါ်ရှိ ဒေတာကို ထပ်ရေးစေပါသည်။

source: opennet.ru

မှတ်ချက် Add