Freenginx နှင့် nginx တို့သည် ယခုအခါ စာသား variable တစ်ခုသို့ data ရေးသားခြင်းမပြုမီ ၎င်း၏အရွယ်အစားကို စစ်ဆေးသည် (+ CVE)


3

TL; DRregexps နှင့် variable များနှင့်အလုပ်လုပ်နေစဉ် ၂၀၂၆ ခုနှစ်တွင် ရှာဖွေတွေ့ရှိခဲ့သော တတိယမြောက် buffer overflow (F5 အရ ASLR မရှိပါက RCE) နှင့် ကြုံတွေ့ပြီးနောက်၊ freenginx developer Maxim Dunin သည် ၎င်းကိုရပ်တန့်ရန် အချိန်တန်ပြီဟု ဆုံးဖြတ်ခဲ့ပြီး data ရေးသားခြင်းမပြုမီ ၎င်း၏ product တွင် variable size check ကို ထည့်သွင်းခဲ့သည်။ ထိုအချိန်မှစ၍ Nginx သည် ဤ feature ကို ကူးယူခဲ့ပြီး ဤပြဿနာနှင့် ဆက်စပ်နေသော CVE အသစ်များကို ဖယ်ရှားပစ်မည်ဟု မျှော်လင့်ချက်ပေးခဲ့သည်။

အခု အသေးစိတ်အတွက်ပါ။

ဇွန်လ ၁၉ ရက်နေ့တွင် ပြုလုပ်ခဲ့သည် ကျူးလွန် Freenginx မှာ variable descriptor မှာ end field တစ်ခုထည့်ပေးပြီး buffer ရဲ့အဆုံးကိုညွှန်ပြပါတယ်။ အရင်ကတော့ သူ့ရဲ့အစ (pos) ကို pointer တစ်ခုပဲရှိခဲ့ပြီး လိုအပ်တဲ့ length ကိုကြိုတင်တွက်ချက်ခဲ့ပြီး (အခုထိလည်း) variable ကို data ကူးယူတဲ့အချိန်မှာတော့ တွက်ချက်ထားတဲ့ length က data ဟာ buffer ထဲကိုဝင်သွားမယ်လို့ အာမခံလိမ့်မယ်လို့ ယူဆခဲ့ကြပါတယ်။ ကံမကောင်းစွာပဲ၊ ဒါက ၂၀၂၆ ခုနှစ် မေလမှာ အမျိုးမျိုးသော လွဲမှားမှုတွေကြောင့် နှစ်ကြိမ်မှားယွင်းနေတယ်ဆိုတာ သက်သေပြခဲ့ပြီးဖြစ်ပါတယ်။၂ (linux.org.ru), ၂ (linux.org.ru)), က buffer overflows နဲ့ ကြောက်စရာကောင်းတဲ့ အကျိုးဆက်တွေကို ဖြစ်ပေါ်စေခဲ့ပါတယ်။ အခုဆိုရင် variable ရဲ့ buffer ကို ဖန်တီးလိုက်တဲ့အခါ၊ ၎င်းရဲ့ အဆုံးကို pointer လည်း ဖြည့်သွားပြီး၊ variable ထဲကို data တွေ မရေးခင်မှာ၊ data မကိုက်ညီဘူးဆိုရင်၊ request processing ဟာ ​​ထိန်းချုပ်ထားတဲ့ နည်းလမ်းနဲ့ error တစ်ခုနဲ့ အဆုံးသတ်သွားပါလိမ့်မယ်။ ဆိုလိုတာက length calculation error တွေက ဆက်ရှိနေနိုင်ပေမယ့် memory ကို မဖြုန်းတီးပါဘူး။ သတ်မှတ်ထားတဲ့ HTTP request ကိုပဲ fail လုပ်မှာပါ။ အောက်ပါ commits (၃ (freenginx.org), ၃ (freenginx.org)) အလားတူကာကွယ်မှုကို access logging code အပါအဝင် code ၏ အခြားအစိတ်အပိုင်းများတွင် ထည့်သွင်းထားသည်။ ဇူလိုင်လ ၇ ရက်နေ့တွင် ဗားရှင်းတစ်ခုကို ထုတ်ဝေခဲ့သည်။ Freenginx ၁.၃၁.၃၊ ဤပြင်ဆင်ချက်ပါဝင်သည်။

ဇူလိုင်လ ၁၅ ရက်နေ့တွင် ဤ commit များကို nginx မှ ကောက်ယူခဲ့သည် (၃ (github.com), ၃ (github.com), ၃ (github.com)၊ ကွင်းဆက်တွင် ဒုတိယနှင့် တတိယကို လဲလှယ်ခြင်းအကြောင်း တစ်စုံတစ်ရာကြောင့်)၊ ပြဿနာကို သတ်မှတ်ခဲ့သည် CVE-2026-42533နှင့် F5 သည် တရားဝင်ထုတ်ပြန်ခဲ့သည် တောင်အာဖရိက (f5.com).

ဒီတစ်ခါ သီးခြားအားနည်းချက်နဲ့ ပတ်သက်ပြီး- ထုတ်ယူထားတဲ့ parameter တွေပါတဲ့ regexps ပါတဲ့ map directive ကိုသုံးတဲ့အခါ ပေါ်လာပါတယ်။ trigger လုပ်ဖို့ လိုအပ်တဲ့ တခြားအခြေအနေတွေနဲ့ ပတ်သက်ပြီး၊ commit description ထဲက text နဲ့ SA ထဲက text က အနည်းငယ်ကွာခြားပါတယ်- SA မှာ သတ်မှတ်ထားတဲ့ string တစ်ခုကို နောက်မှာ တွက်ချက်ရမယ်လို့ ဖော်ပြထားပါတယ်။ အဲဒီ map ရဲ့ ရလဒ်မတိုင်ခင်မှာ map ကနေ ကျန်နေတဲ့ extracted parameter ကို အသုံးပြုပါတယ်။ ဥပမာမှာ commit description မှာ၊ ဒီအဆင့်တွေကြားမှာ၊ extracted parameter ပါတဲ့ variable ကိုလည်း zero out လုပ်ထားပါတယ်။ ဒါပေမယ့် ဒီလိုဖြစ်တာက running nginx အများစုမှာ ဖြစ်နိုင်ခြေနည်းပြီး ဒါကြောင့် အားနည်းချက်က လူအနည်းငယ်ကိုပဲ ထိခိုက်ခဲ့ပါတယ်။ ဒီကိစ္စအတွက် length calculation အတွက် fix တစ်ခုဟာ committed edits တွေမှာ မပါရှိဘူးဆိုတာကိုလည်း သတိပြုသင့်ပါတယ် (ဒါမှမဟုတ် ကျွန်တော် ကောင်းကောင်းရှာဖွေမိလို့လား?)၊ ပြဿနာကို controlled HTTP request fail အဖြစ် ပြောင်းလဲပေးတဲ့ protection တစ်ခုပဲ ရှိပါတယ်။ ဇူလိုင်လ ၁၉ ရက်နေ့မှာ freenginx မှာ fix အချို့ကို ထည့်သွင်းခဲ့ပေမယ့် (5bfb, 7622, b906) အလားတူအခြေအနေအတွက် အရှည်ကို တွက်ချက်နေသော်လည်း ဤသို့ဟုတ်မဟုတ်ကို ချက်ချင်းရှင်းလင်းစွာမသိရသေးပါ။

အဆိုပါ အားနည်းချက်သည် nginx 0.9.6 ဗားရှင်းတွင် ပေါ်ပေါက်ခဲ့ပြီး၊ freenginx 1.31.3၊ nginx 1.30.4၊ nginx 1.31.3 ဗားရှင်းများတွင် ပြင်ဆင်မှုများ ထည့်သွင်းထားပါသည်။

nginx SA မှ အားနည်းချက်ကို လွတ်လပ်စွာ အစီရင်ခံခြင်းနှင့် "ညှိနှိုင်းထုတ်ဖော်မှုစံနှုန်းများ" ကို လိုက်နာခြင်းအတွက် လူပုဂ္ဂိုလ်အများအပြားကို ကျေးဇူးတင်ရှိပါသည်။

F5 သည် AntAISecurityLab မှ Ming Xuan၊ DKD (@pidifn)၊ Ji'an Zhou နှင့် Zhen Yan၊ EVO.company မှ Rafael Gacek၊ Sergii Negodiuk၊ Calif.io မှ Lam Jun Rong၊ Winfunc Research (winfunc.com) မှ Mufeed VH၊ Vexera AI ( တို့ကို အသိအမှတ်ပြုသည် )https://vexera.ai), Tu Tran Dinh (@1w4y), Stan Shaw (cyberstan), qianshuidewajueji, zenneth (randomguy6407), depthfirst မှ Zhenpeng (Leo) Lin, Lukas Johannes Moeller, Vodafone Türkiye မှ Melih Tolga Sahin, Ayoub Nabil Boubagrat (GitHub: @ayoubnabil), နှင့် Milan Jovic (Kljunowsky) တို့အား ဤပြဿနာကို ကျွန်ုပ်တို့ထံ လွတ်လပ်စွာ တင်ပြခဲ့ခြင်းနှင့် ပေါင်းစပ်ညှိနှိုင်းထားသော ထုတ်ဖော်မှုဆိုင်ရာ အမြင့်ဆုံးစံနှုန်းများကို လိုက်နာခဲ့ခြင်းအတွက် ကျေးဇူးတင်ရှိပါသည်။

freenginx မှာ ပြင်ဆင်ချက်နဲ့ ပတ်သက်တဲ့ ပူးတွဲပါ အချက်အလက်တွေဟာ commit message မှာပဲ ကန့်သတ်ထားပါတယ်။ အပြောင်းအလဲဒီပြင်ဆင်ချက်ကို "လုံခြုံရေး" ဒါမှမဟုတ် "ချို့ယွင်းချက်ပြင်ဆင်မှု" လို့တောင် မဖော်ပြထားပါဘူး၊ "အင်္ဂါရပ်" လို့ပဲ ဖော်ပြထားပါတယ်။ စာရေးသူက ဒီပြဿနာကို အရေးကြီးတယ်လို့ မယူဆခဲ့ပုံရပါတယ်။ F5 မှာ အထက်ဖော်ပြပါပုဂ္ဂိုလ်တွေ တင်ပြခဲ့တဲ့ ပြဿနာတွေနဲ့ freenginx ကနေ ကူးယူထားတဲ့ commit ကြားက ဆက်နွယ်မှုကို ဆုံးဖြတ်ဖို့ မဖြစ်နိုင်သလို၊ သူတို့ (ဒါမှမဟုတ် တခြားဘယ်သူမဆို) က ဒီပြဿနာကို freenginx စာရေးသူဆီ တင်ပြခဲ့လားဆိုတာလည်း ဆုံးဖြတ်ဖို့ မဖြစ်နိုင်ပါဘူး။

source: linux.org.ru

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster