စစ်ဆေးမှုအမှားများ

Checksum အမှားများရှင်းလင်းချက်- Integrity ကျရှုံးမှုများကို မည်သို့ရှာဖွေပြီး ကာကွယ်ရမည်နည်း

မာတိကာ

မဖြစ်မနေဖတ်သင့်သောပို့စ်များ

စိတ်ဝင်စားဖွယ်ကောင်းသော နောက်ဆုံးပို့စ်များ

Checksum ဆိုတာဘာလဲ၊ ဘာကြောင့်အရေးကြီးတာလဲ

Checksum တွေက ရှိထားသင့်တဲ့ ကောင်းမွန်တဲ့ data တစ်ခုတင် မဟုတ်ပါဘူး၊ ဖိုင်နဲ့ package တွေရဲ့ မှန်ကန်မှုကို အတည်ပြုရာမှာ အရေးကြီးတဲ့ အစိတ်အပိုင်းတစ်ခုလည်း ဖြစ်ပါတယ်။ ခေတ်မီဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်များpackage တစ်ခုကို download လုပ်တဲ့အခါ၊ Docker image တစ်ခုကို pull လုပ်တဲ့အခါ ဒါမှမဟုတ် dependency တစ်ခုကို cache လုပ်တဲ့အခါ CI/CD pipeline, checksum သည် artifact ကို ပြောင်းလဲထားခြင်းမရှိကြောင်း အတည်ပြုရန် ကူညီပေးသည်။ သုံးနေတာပဲဖြစ်ဖြစ် ကွန်ဒါတပ်ဆင်ခြင်း သို့မဟုတ် သီးသန့်မှတ်ပုံတင်ခြင်းမှ ရှေးဟောင်းပစ္စည်းတစ်ခုကို ရယူနေချိန်တွင် checksum အမှား အတည်ပြုခြင်းသည် လက်ဗွေရာကဲ့သို့ လုပ်ဆောင်သည်။ မကိုက်ညီမှုသည် စိတ်အနှောင့်အယှက်ဖြစ်စေရုံသာမက ပက်ကေ့ဂျ်ပျက်စီးနေ သို့မဟုတ် ခိုးယူခံထားရသည့် လက္ခဏာတစ်ခုလည်း ဖြစ်နိုင်သည်။

တစ်ခုခုပျက်သွားတဲ့အထိ developer တွေက checksum တွေကို လျစ်လျူရှုထားလေ့ရှိပါတယ်။ ဒါပေမယ့် code ကို ခန့်မှန်းနိုင်ပြီး လုံခြုံစေဖို့အတွက် အထူးသဖြင့် သင့်ရဲ့ environment က အောက်ပါအချက်တွေပေါ် မူတည်နေတဲ့အခါ checksum တွေကို လျစ်လျူရှုထားဖို့ အရေးကြီးပါတယ်။ open-source စာကြည့်တိုက်များ နှင့် ပြင်ပအဖွဲ့အစည်းများ၏ ပက်ကေ့ဂျ်များ.

Checksum အမှားများကို နားလည်ခြင်း

Checksum အမှားများသည် နည်းလမ်းအမျိုးမျိုးဖြင့် ပေါ်လာသည်-

  • ပက်ကေ့ဂျ်ထည့်သွင်းမှုများအတွင်း “Checksum မကိုက်ညီမှု” (ဥပမာ- conda ထည့်သွင်းခြင်း သို့မဟုတ် pip ထည့်သွင်းခြင်း).
  • တည်ဆောက်မှု ပျက်ကွက်မှုများ CI/CD pipelinechecksum အတည်ပြုချက်ပြဿနာများကြောင့်ဖြစ်သည်။
  • Docker image pull များ သို့မဟုတ် container scan များပြုလုပ်စဉ် သတိပေးချက်များ။

အဖြစ်များသည့်အကြောင်းရင်းများမှာ

  • မတည်ငြိမ်သော ကွန်ရက်များ သို့မဟုတ် အနှောင့်အယှက်များကြောင့် ဒေါင်းလုဒ်များ ပျက်စီးနေပါသည်။
  • ပြုပြင်ထားသော ရှေးဟောင်းပစ္စည်းများ (တမင်တကာဖြစ်စေ မတော်တဆဖြစ်စေ)။
  • ဗားရှင်းများ မကိုက်ညီခြင်း သို့မဟုတ် ဟောင်းနွမ်းနေသော ကက်ရှ်ဒေတာ။

conda ဖြင့် ဥပမာ-

conda install some-package # Output: ERROR: Hash mismatch for downloaded package 

ဒီလိုဖြစ်လာပြီးနောက်မှာ env ကိုဖယ်ရှားပါ conda ထို့နောက် ပြန်လည်ထည့်သွင်းသောအခါတွင် ၎င်းသည် cache နှင့်ဆက်စပ်သော checksum အမှားများကြောင့် ဖြစ်နိုင်ခြေများသည်။ ကွန်ဒါ သန့်ရှင်းသော - အားလုံး ကူညီပေးနိုင်ပါတယ်၊ ဒါပေမယ့် ယုံကြည်ရတဲ့ အရင်းအမြစ်တွေကနေ ရယူမှသာပါ။

ဆော့ဖ်ဝဲလ် ထောက်ပံ့ရေး ကွင်းဆက်တွင် လုံခြုံရေးဆိုင်ရာ သက်ရောက်မှုများ

Checksum အမှားများသည် နည်းပညာပိုင်းဆိုင်ရာ ချို့ယွင်းချက်များသာမကဘဲ၊ ၎င်းတို့သည် မကြာခဏဆိုသလို မလိုလားအပ်သော ကျူးကျော်ဝင်ရောက်မှု၏ အစောပိုင်း ညွှန်ပြချက်များ ဖြစ်လေ့ရှိသည်။ third-party library တွင် ပြုပြင်ထားသော checksum တစ်ခုရှိပါက-

  • ပက်ကေ့ချ် ပျက်စီးသွားနိုင်ပါတယ်
  • သင့်ရဲ့ build ဟာ backdoor version တစ်ခုကို တိတ်တဆိတ် ဆွဲယူနေနိုင်ပါတယ်။
  • Downstream အသုံးပြုသူများသည် အန္တရာယ်ရှိသော ကုဒ်ကို မသိလိုက်ဘဲ ဖြန့်ကျက်နိုင်သည်။

ငွေစာရင်း DevSecOps မှာ validation က အရမ်းအရေးကြီးပါတယ်။လုံခြုံစိတ်ချရကြောင်း သေချာစေသည်။ pipelineမရှိမဖြစ်လိုအပ်သော လုံခြုံရေးစစ်ဆေးမှုများဖြင့် ဖွံ့ဖြိုးတိုးတက်ရေး လုပ်ငန်းစဉ်များကို ပေါင်းကူးပေးခြင်းဖြင့်။

Checksum အမှားများ CI/CD Pipelines

အဖြစ်များတဲ့ ကျရှုံးမှုပုံစံတစ်ခုကတော့ ဒီလိုပါ။

  1. အဆိုပါ pipeline conda သို့မဟုတ် Python ပတ်ဝန်းကျင်များကို cache လုပ်သည်
  2. သန့်ရှင်းရေးအဆင့်တစ်ခုထည့်ပါ- env ကိုဖယ်ရှားပါ conda
  3. နောက် build သည် stale cached package များကြောင့် checksum error ဖြင့် မအောင်မြင်ပါ။

GitHub Actions သို့မဟုတ် Jenkins ကဲ့သို့သော CI tools များသည် cache လုပ်ထားသော artifacts များကို မကြာခဏ ပြန်လည်အသုံးပြုလေ့ရှိသည်။ upstream checksum ပြောင်းလဲသွားပါက (update များ သို့မဟုတ် tampering များကြောင့်)၊ သင်၏ pipeline မေ-

  • မကိုက်ညီမှုကြောင့် မအောင်မြင်ပါ (အကောင်းဆုံးအခြေအနေ)
  • ဒါမှမဟုတ် ပိုဆိုးတာက validation ကိုကျော်ပြီး ပြောင်းလဲထားတဲ့ code ကို deploy လုပ်ပါ။

ဥပမာ:

steps: - name: Clean conda environment   run: conda remove --name myenv --all - name: Install dependencies   run: conda install --file requirements.txt # Potential checksum error if the package was altered 

သမာဓိမအောင်မြင်မှုများကို ကာကွယ်ရန် အကောင်းဆုံးလုပ်ဆောင်မှုများ

Checksum အမှားများသည် အနှောင့်အယှက်ဖြစ်စေနိုင်သော်လည်း အဖိုးတန်သတိပေးလက္ခဏာများလည်းဖြစ်သည်။ ၎င်းတို့ကို ထိရောက်စွာဖြေရှင်းခြင်းဆိုသည်မှာ ၎င်းတို့ဖြစ်ပွားရသည့်အကြောင်းရင်းနှင့် ၎င်းတို့ကို မည်သို့ပြုပြင်ရမည် သို့မဟုတ် ကာကွယ်ရမည်ကို နားလည်ခြင်းဖြစ်သည်။

စောင့်ကြည့်ရမည့် အဖြစ်များသော သမာဓိအမှားများ

ဒါတွေက checksum validation မအောင်မြင်တဲ့ ပုံမှန်အခြေအနေတွေပါ။

  • စစ်ဆေးမှု မကိုက်ညီမှုဒေါင်းလုဒ်လုပ်ထားသော package ၏ hash သည် မျှော်လင့်ထားသောတန်ဖိုးနှင့် မကိုက်ညီသည့်အခါ။ ၎င်းသည် မကြာခဏ install လုပ်နေစဉ်အတွင်း ဖြစ်ပွားလေ့ရှိသည်- ကွန်ဒါ, PIP, သို့မဟုတ် အလားတူကိရိယာများ။
  • ပျက်စီးနေသောဒေါင်းလုဒ်များကွန်ရက်ချိတ်ဆက်မှုများ မတည်ငြိမ်ခြင်း သို့မဟုတ် အနှောင့်အယှက်ဖြစ်ခြင်းကြောင့် ဖြစ်ပေါ်သည်။ ပက်ကေ့ဂျ်ကို ထည့်သွင်းပြီးသော်လည်း မှန်ကန်စွာ အလုပ်မလုပ်နိုင်ပါ။
  • ဗားရှင်းများ မကိုက်ညီခြင်း သို့မဟုတ် သက်တမ်းကုန်ဆုံးနေသော ကက်ရှ်များ: CI/CD pipelines နှင့် local environments များသည် package များ၏ ဗားရှင်းဟောင်းများကို cache လုပ်နိုင်သည်။ upstream package ကို update လုပ်ခြင်း သို့မဟုတ် ပြုပြင်ခြင်းပြုလုပ်ထားသော်လည်း cache ကို refresh မလုပ်ပါက checksum အမှားများ ဖြစ်ပေါ်နိုင်သည်။

ဤဇာစ်မြစ်အကြောင်းရင်းများကို နားလည်ခြင်းသည် အဖွဲ့များအား ပိုမိုခံနိုင်ရည်ရှိသော လုပ်ငန်းစဉ်များတည်ဆောက်ရန်နှင့် ထောက်ပံ့ရေးကွင်းဆက်တွင် အရာများ မည်သည့်နေရာတွင် ပြိုကွဲနေနိုင်သည်ကို ဖော်ထုတ်ရန် ကူညီပေးသည်။

အမှားများကို ကာကွယ်ရန် သို့မဟုတ် ဖြေရှင်းရန် ကိရိယာများနှင့် လုပ်ဆောင်ချက်များ

checksum အမှားများ အဘယ်ကြောင့် ဖြစ်ပွားသည်ကို သင်နားလည်ပြီးသည်နှင့် နောက်တစ်ဆင့်မှာ ပစ်မှတ်ထားဖြေရှင်းချက်များကို အသုံးချရန်ဖြစ်သည်။

အောက်ပါတို့ကို အသုံးပြု၍ သင့် cache ကို မှန်မှန်ရှင်းလင်းပါ- ကွန်ဒါ သန့်ရှင်းသည် - အားလုံး

  •  ၎င်းက အသုံးမပြုသော package များနှင့် cache ဖိုင်များကို ဖယ်ရှားပေးသောကြောင့်၊ ဟောင်းနွမ်းနေသော သို့မဟုတ် ပြုပြင်ထားသော artifacts များကို အသုံးပြုနိုင်ခြေကို လျှော့ချပေးပါသည်။
  • cached dependencies များတွင် မျက်ကန်းယုံကြည်မှုကို ရှောင်ကြဉ်ပါ။ သော်လည်း CI/CD အချိန်ကုန်သက်သာစေရန်အတွက် GitHub Actions သို့မဟုတ် GitLab CI cache environments ကဲ့သို့သော tools များသည် package များကို upstream တွင် update လုပ်ပါက အန္တရာယ်များ ဖြစ်ပေါ်စေနိုင်သည်။
  • ယုံကြည်ရသောရင်းမြစ်များမှ ပြန်လည်ထည့်သွင်းပါ: ဖြစ်နိုင်သည့်အခါတွင် အတည်ပြုထားသော registry များမှ package များကို တိုက်ရိုက်ပြန်လည်ထည့်သွင်းပါ။ ၎င်းတို့၏ မှန်ကန်မှုကို အတည်ပြုပြီးမှသာ mirror များ သို့မဟုတ် secondary repositories များကို ရှောင်ကြဉ်ပါ။
  • ကိရိယာများတစ်လျှောက် checksum အတည်ပြုချက်ကို ပြဋ္ဌာန်းပါခေတ်သစ် package manager အများစုသည် hash validation ကို ပံ့ပိုးပေးပါသည်။ မကိုက်ညီသော သို့မဟုတ် ပြောင်းလဲထားသော ဖိုင်များကို ငြင်းပယ်ရန် ၎င်းကို အသုံးပြုပါ။

ပြန်လည်ထုတ်လုပ်နိုင်သော တည်ဆောက်မှုများကို အသုံးပြုပါ သော့ခတ်ထားသော ဗားရှင်းများနှင့် တိကျသော hash များဖြင့်-

numpy==1.21.0 –hash=sha256:

  •  ၎င်းက တသမတ်တည်းရှိသော ပတ်ဝန်းကျင်များကို သေချာစေပြီး ဒေသတွင်းနှင့် ထုတ်လုပ်မှု ဆက်တင်များအကြား အံ့အားသင့်စရာများကို လျော့နည်းစေသည်။

လျှပ်တစ်ပြက်ဓာတ်ပုံပတ်ဝန်းကျင်များ အတူ:

conda env export > environment.yml

  •  ၎င်းက အဖွဲ့များအား စက်များတစ်လျှောက်တွင် တိကျသောပတ်ဝန်းကျင်များကို ပြန်လည်တည်ဆောက်နိုင်စေသည် သို့မဟုတ် pipeline အဆင့်။

နိဂုံးချုပ်- Xygeni ဖြင့် သင့်ကုဒ်၏ သမာဓိကို အားကောင်းစေပါ။

Checksum အမှားများသည် အသေးအဖွဲ အဆင်မပြေမှုများထက် ပိုမိုနက်ရှိုင်းသော ခိုင်မာမှုအန္တရာယ်များအတွက် အနီရောင်အလံများဖြစ်သည်။ သင်အသုံးပြုနေသည်ဖြစ်စေ ကွန်ဒါ, PIPသို့မဟုတ် Docker သည် ဤ validation များကို လျစ်လျူရှုခြင်းဖြင့် build များ ချိုးဖောက်ခံရခြင်းနှင့် အားနည်းချက်များ ဖော်ထုတ်ခံရခြင်းတို့ကို ဆိုလိုနိုင်သည်။ ကဲ့သို့သောကိရိယာများဖြင့် ပတ်ဝန်းကျင်များကို သန့်ရှင်းစွာစီမံခန့်ခွဲခြင်း env ကိုဖယ်ရှားပါ conda or ကွန်ဒါ သန့်ရှင်း အခြေခံကျပေမယ့် တကယ့်လုံခြုံရေးက သင့်တစ်လျှောက်လုံးတွင် သမာဓိစစ်ဆေးမှုများကို အလိုအလျောက်လုပ်ဆောင်ခြင်း CI/CD pipeline.

ဆိုက်ဂျီနီ checksum validation နှင့် hash enforcement တို့ကို ၎င်းတို့၏ software supply chains များအတွင်း နက်ရှိုင်းစွာ ထည့်သွင်းနိုင်စေပါသည်။ tamper detection နှင့် reproducible build verification အတွက် features များဖြင့် Xygeni သည် သင်၏ artifacts များကို ခြေလှမ်းတိုင်းတွင် ယုံကြည်စိတ်ချရမှုရှိစေရန် သေချာစေသည်။ လုံခြုံပြီး ခန့်မှန်းနိုင်သော ဆော့ဖ်ဝဲလ်သည် သင့်အတွက် အရေးကြီးပါက checksum များကို သင်၏ ပထမခံစစ်အဖြစ် သတ်မှတ်ပါ။

sca-tools-software-composition-analysis-tools
သင့်ဆော့ဖ်ဝဲလ်အန္တရာယ်များကို ဦးစားပေးသတ်မှတ်ခြင်း၊ ပြုပြင်ခြင်းနှင့် လုံခြုံစေခြင်း
သင့်ရဲ့ အခမဲ့အကောင့်ကို ရယူလိုက်ပါ။
အကြွေးဝယ်ကဒ်မရှိပါ။

သင့်ရဲ့ Software Development နဲ့ Delivery ကို လုံခြုံအောင်ထားပါ

Xygeni ထုတ်ကုန်အစုံနှင့်အတူ