လက်မှတ်များကို လုပ်ဆောင်သည့်အခါ Mozilla NSS ရှိ ကုဒ်လုပ်ဆောင်မှု အားနည်းချက်

DSA သို့မဟုတ် RSA-PSS ဒစ်ဂျစ်တယ် လက်မှတ်များကို အသုံးပြု၍ သတ်မှတ်ထားသော ဒစ်ဂျစ်တယ် လက်မှတ်များကို လုပ်ဆောင်သောအခါတွင် တိုက်ခိုက်သူကုဒ်၏ လုပ်ဆောင်ချက်ကို ဖြစ်ပေါ်စေနိုင်သည့် အရေးပါသော အားနည်းချက်တစ်ခု (CVE-2021-43527) ကို Mozilla မှ တီထွင်ထားသည့် လျှို့ဝှက်စာဝှက်စာကြည့်တိုက်များအစုတွင် NSS (Network Security Services) တွင် တွေ့ရှိခဲ့သည်။ DER ကုဒ်သွင်းနည်း ( Distinguished Encoding Rules )။ BigSig ဟုအမည်တပ်ထားသော ပြဿနာကို NSS 3.73 နှင့် NSS ESR 3.68.1 တွင် ဖြေရှင်းထားသည်။ ဖြန့်ဝေမှုများတွင် ပက်ကေ့ခ်ျအပ်ဒိတ်များကို Debian၊ RHEL၊ Ubuntu၊ SUSE၊ Arch Linux၊ Gentoo၊ FreeBSD အတွက် ရနိုင်ပါသည်။ Fedora အတွက် အပ်ဒိတ်များ မရရှိနိုင်သေးပါ။

CMS၊ S/MIME၊ PKCS #7 နှင့် PKCS #12 ဒစ်ဂျစ်တယ် လက်မှတ်များကို ကိုင်တွယ်ရန် NSS ကို အသုံးပြုသည့် အပလီကေးရှင်းများတွင် ပြဿနာ ဖြစ်ပွားခြင်း သို့မဟုတ် TLS၊ X.509၊ OCSP နှင့် CRL အကောင်အထည်ဖော်မှုများတွင် လက်မှတ်များကို အတည်ပြုသည့်အခါတွင် ပြဿနာ ဖြစ်ပေါ်ပါသည်။ အားနည်းချက်သည် TLS၊ DTLS နှင့် S/MIME တို့ကို ပံ့ပိုးပေးသည့် ကလိုင်းယင့်နှင့် ဆာဗာအက်ပ်ပလီကေးရှင်းအမျိုးမျိုးတွင် ပေါ်လာနိုင်ပြီး NSS CERT_VerifyCertificate() ခေါ်ဆိုမှုကို အတည်ပြုရန်အတွက် ဒစ်ဂျစ်တယ်လက်မှတ်များကို အတည်ပြုရန် အီးမေးလ်ကလိုင်းယင့်များနှင့် PDF ကြည့်ရှုသူများ၊

LibreOffice၊ Evolution နှင့် Evince ကို အားနည်းချက်ရှိသော အပလီကေးရှင်းများ၏ နမူနာအဖြစ် ဖော်ပြထားပါသည်။ ဖြစ်နိုင်ချေအားဖြင့်၊ ပြဿနာသည် Pidgin၊ Apache OpenOffice၊ Suricata၊ Curl၊ Chrony၊ Red Hat Directory Server၊ Red Hat Certificate System၊ Apache http ဆာဗာအတွက် mod_nss၊ Oracle Communications Messaging Server၊ Oracle Directory Server Enterprise Edition ကဲ့သို့သော ပရောဂျက်များကိုလည်း ထိခိုက်စေနိုင်ပါသည်။ သို့သော်၊ အားနည်းချက်သည် NSS တွင် ပါဝင်သော သီးခြား mozilla::pkix စာကြည့်တိုက်ကို အသုံးပြုသည့် Firefox၊ Thunderbird နှင့် Tor Browser တွင် မပေါ်ပါ။ Chromium-based ဘရောက်ဆာများ (၎င်းတို့ကို NSS ဖြင့် အထူးတည်ဆောက်ထားခြင်းမဟုတ်ပါက) NSS ကို 2015 ခုနှစ်အထိ အသုံးပြုခဲ့သော်လည်း BoringSSL သို့ပြောင်းပြီးနောက်တွင်လည်း ပြဿနာကို သက်ရောက်မှုမရှိပါ။

အားနည်းချက်သည် secvfy.c ဖိုင်မှ vfy_CreateContext လုပ်ဆောင်ချက်ရှိ လက်မှတ်အတည်ပြုကုဒ်တွင် အမှားအယွင်းတစ်ခုကြောင့် ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ ကလိုင်းယင့်သည် ဆာဗာမှ အသိအမှတ်ပြုလက်မှတ်ကို ဖတ်သည့်အခါနှင့် ဆာဗာမှ ကလိုင်းယင့်လက်မှတ်များကို လုပ်ဆောင်သည့်အခါ နှစ်ခုလုံးတွင် အမှားအယွင်း ဖြစ်ပေါ်သည်။ DER-ကုဒ်ဝှက်ထားသော ဒစ်ဂျစ်တယ်လက်မှတ်ကို စစ်ဆေးသည့်အခါ NSS သည် လက်မှတ်ကို ပုံသေအရွယ်အစားကြားခံအဖြစ် ကုဒ်လုပ်ပြီး PKCS #11 မော်ဂျူးသို့ ဖြတ်သွားပါသည်။ ထပ်မံလုပ်ဆောင်နေစဉ်အတွင်း၊ ဒစ်ဂျစ်တယ်လက်မှတ်အရွယ်အစားသည် 16384 ဘစ်ထက်ကျော်လွန်ပါက ဒစ်ဂျစ်တယ်လက်မှတ်အရွယ်အစားသည် 2048 bits ထက်ကျော်လွန်ပါက (XNUMX bytes ကို ကြားခံအတွက် ခွဲဝေချထားပေးသည့် ကြားခံကြားခံများ ပြည့်လျှံသွားစေနိုင်သော်လည်း၊ လက်မှတ်ပိုကြီးနိုင်သည်ကို မစစ်ဆေးပါ။))

အားနည်းချက်ပါရှိသောကုဒ်ကို 2003 တွင်ခြေရာခံနိုင်သော်လည်း 2012 တွင် ပြန်လည်ပြုပြင်မွမ်းမံခြင်းမပြီးမချင်း ၎င်းသည် ခြိမ်းခြောက်မှုမပြုလုပ်ခဲ့ပါ။ 2017 တွင်၊ RSA-PSS ပံ့ပိုးမှုကို အကောင်အထည်ဖော်ရာတွင် အလားတူအမှားမျိုး ပြုလုပ်ခဲ့သည်။ တိုက်ခိုက်မှုတစ်ခုလုပ်ဆောင်ရန်၊ ဒစ်ဂျစ်တယ်လက်မှတ်၏ မှန်ကန်မှုကို မစစ်ဆေးမီ အဆင့်တွင် လျှံတက်လာသောကြောင့် လိုအပ်သောဒေတာရယူရန် အရင်းအမြစ်-အလေးပေးသော သော့အချို့ကို ထုတ်လုပ်ရန် မလိုအပ်ပါ။ နယ်နိမိတ်များကျော်လွန်သွားသော ဒေတာအစိတ်အပိုင်းကို လုပ်ဆောင်မှုဆိုင်ရာ အသုံးချမှုများ ဖန်တီးမှုကို ရိုးရှင်းလွယ်ကူစေသည့် လုပ်ဆောင်ချက်များဆီသို့ ညွှန်ညွှန်များပါရှိသော မှတ်ဉာဏ်ဧရိယာသို့ ရေးမှတ်ထားသည်။

အဆိုပါ အားနည်းချက်ကို Google Project Zero မှ သုတေသီများက ရှာဖွေတွေ့ရှိခဲ့ခြင်းဖြစ်ပြီး ကျယ်ပြန့်စွာ စမ်းသပ်ထားသည့် နာမည်ကြီး ပရောဂျက်တစ်ခုတွင် အချိန်အတော်ကြာ သေးငယ်သော အားနည်းချက်များကို မည်ကဲ့သို့ ရှာဖွေတွေ့ရှိနိုင်သည်ကို ကောင်းစွာ သရုပ်ပြထားခြင်း ဖြစ်ပါသည်။

  • NSS ကုဒ်ကို ခေတ်မီသော စမ်းသပ်ခြင်းနှင့် အမှားအယွင်း ခွဲခြမ်းစိတ်ဖြာခြင်းနည်းပညာများကို အသုံးပြု၍ အတွေ့အကြုံရှိ လုံခြုံရေးအဖွဲ့မှ ထိန်းသိမ်းထားသည်။ NSS ရှိ အားနည်းချက်များကို ဖော်ထုတ်ခြင်းအတွက် သိသာထင်ရှားသော ဆုလက်ဆောင်များ ပေးဆောင်ရန် အစီအစဉ်များစွာ ရှိပါသည်။
  • NSS သည် Google ၏ oss-fuzz ပဏာမခြေလှမ်းတွင်ပါဝင်ရန် ပထမဆုံးပရောဂျက်များထဲမှတစ်ခုဖြစ်ပြီး Mozilla ၏ libFuzzer-based fuzz စမ်းသပ်မှုစနစ်တွင်လည်း စမ်းသပ်ခဲ့သည်။
  • စာကြည့်တိုက်ကုဒ်ကို 2008 ခုနှစ်ကတည်းက Coverity ဝန်ဆောင်မှုမှ စောင့်ကြည့်ခြင်း အပါအဝင် static analyzers အမျိုးမျိုးတွင် အကြိမ်များစွာ စစ်ဆေးခဲ့သည်။
  • 2015 ခုနှစ်အထိ NSS ကို Google Chrome တွင်အသုံးပြုခဲ့ပြီး Google အဖွဲ့မှ Mozilla နှင့် သီးခြားပြန်လည်သုံးသပ်ခဲ့သည် (2015 ခုနှစ်ကတည်းက Chrome သည် BoringSSL သို့ပြောင်းခဲ့သော်လည်း NSS-based port အတွက် ပံ့ပိုးမှု ကျန်ရှိနေသည်)။

ပြဿနာကို အချိန်အတော်ကြာအောင် မဖော်ထုတ်နိုင်ခြင်းကြောင့် အဓိကပြဿနာများ

  • NSS modular library နှင့် fuzzing testing သည် တစ်ခုလုံးမဟုတ်သော်လည်း အစိတ်အပိုင်းတစ်ခုချင်းစီအဆင့်တွင် လုပ်ဆောင်ခဲ့ပါသည်။ ဥပမာအားဖြင့်၊ DER ကုဒ်ကို ကုဒ်နှင့် လုပ်ဆောင်ခြင်းအတွက် အသိအမှတ်ပြုလက်မှတ်များကို သီးခြားစီ စစ်ဆေးထားသည် - ရှုပ်ထွေးနေချိန်တွင်၊ မေးခွန်းရှိ အားနည်းချက်ကို ပေါ်လွင်စေမည့် လက်မှတ်ကို ရယူထားနိုင်သော်လည်း ၎င်းစစ်ဆေးမှုသည် စိစစ်ရေးကုဒ်သို့ မရောက်ဘဲ ပြဿနာမတက်ခဲ့ပါ။ သူ့ဟာသူထုတ်ဖော်။
  • fuzzing testing အတွင်း NSS တွင် အလားတူကန့်သတ်ချက်များမရှိသဖြင့် output size (10000 bytes) ကို တင်းကျပ်စွာကန့်သတ်ထားပါသည် (သာမန်မုဒ်ရှိဖွဲ့စည်းပုံအများအပြားတွင် 10000 bytes အရွယ်အစားရှိနိုင်သည်၊ ထို့ကြောင့် ပြဿနာများကိုဖော်ထုတ်ရန် Input data များလိုအပ်ပါသည်) . အပြည့်အဝအတည်ပြုရန်အတွက်၊ ကန့်သတ်ချက်သည် 224-1 bytes (16 MB) ဖြစ်သင့်ပြီး TLS တွင် ခွင့်ပြုထားသော အများဆုံးလက်မှတ်အရွယ်အစားနှင့် ကိုက်ညီပါသည်။
  • fuzz စမ်းသပ်ခြင်း ကုဒ်အကျုံးဝင်မှုအပေါ် အထင်အမြင်လွဲခြင်း။ အားနည်းချက်ရှိသော ကုဒ်ကို တက်ကြွစွာ စမ်းသပ်ခဲ့သော်လည်း လိုအပ်သော ထည့်သွင်းဒေတာကို မထုတ်ပေးနိုင်သော fuzzers ကို အသုံးပြုထားသည်။ ဥပမာအားဖြင့်၊ fuzzer tls_server_target သည် ကြိုတင်သတ်မှတ်ထားသော အဆင်သင့်လုပ်ထားသော လက်မှတ်များကို အသုံးပြုထားပြီး၊ ၎င်းသည် လက်မှတ်အတည်ပြုကုဒ်ကို TLS မက်ဆေ့ချ်များနှင့် ပရိုတိုကော အခြေအနေပြောင်းလဲမှုများကိုသာ ကန့်သတ်ထားသည်။

source: opennet.ru

မှတ်ချက် Add