လွယ်လွယ်ပြောရရင် Supply Chain Attack ဆိုတာ hacker က သင့်ကွန်ပျူတာကို တိုက်ရိုက် မတိုက်ခိုက်ဘဲ၊ သင် သုံးနေတဲ့ software ရဲ့ “ထောက်ပံ့ရေးကွင်းဆက်” — library တွေ၊ update တွေ၊ tool တွေထဲက တစ်ခုခုကို အရင် ဖောက်ပြီး အဲဒီကနေတစ်ဆင့် သင့်ဆီ ရောက်လာတဲ့ တိုက်ခိုက်မှုပါ။
ကျွန်တော် ဒါကို ပထမဆုံး နားလည်သွားတုန်းက တော်တော် ထိတ်လန့်သွားတယ်။ ဘာလို့လဲဆိုတော့ သင် ဘာမှ မမှားဘူး။ သံသယဖြစ်စရာ link တစ်ခုမှ မနှိပ်ဘူး။ သင် လုပ်တာက သာမန် update တစ်ခုကို နှိပ်လိုက်ရုံပဲ။ ဒါပေမယ့် အဲဒီ update ထဲမှာပဲ hacker ရဲ့ code ပါလာတယ်။
စားသောက်ဆိုင်ကို ဟင်းသီးဟင်းရွက် ပို့တဲ့သူကနေ တိုက်ခိုက်သလို
ဒီလိုနဲ့ ရှင်းပြမယ်။ စားသောက်ဆိုင်တစ်ဆိုင်ကို ဖျက်ဆီးချင်တဲ့သူတစ်ယောက်ရှိတယ်။ ဆိုင်ရဲ့ တံခါးကို ဖောက်ဖို့ ခက်တယ် — လုံခြုံရေးက ကောင်းတယ်။ ဒါကြောင့် သူက ဆိုင်ကို ဟင်းသီးဟင်းရွက် ပို့ပေးတဲ့ ကားဆရာကို လိုက်ခြိမ်းခြောက်တယ်၊ ဟင်းထဲကို အဆိပ်ရောထည့်ခိုင်းတယ်။ ဆိုင်က ဟင်းသီးဟင်းရွက် ပုံမှန်အတိုင်း လက်ခံတယ်၊ ပုံမှန်အတိုင်း ချက်တယ်၊ ဧည့်သည်တွေက ပုံမှန်အတိုင်း စားတယ်။ ဆိုင်ရဲ့ တံခါးကို ဘယ်သူမှ မဖောက်ခဲ့ဘူး — ဒါပေမယ့် အဆိပ်က ရောက်သွားပြီ။
Software လည်း အတူတူပဲ။ သင် ရေးတဲ့ program တစ်ခုက တခြားသူ ရေးထားတဲ့ library ရာချီကို မှီခိုနေတယ်။ Library တစ်ခုခုထဲမှာ hacker ရဲ့ code ပါသွားရင် သင့်ရဲ့ program ပါ ကူးစက်သွားတယ်။
တကယ်ဖြစ်ခဲ့တဲ့ ဥပမာ ၃ ခု
၁။ SolarWinds (၂၀၂၀) — အကြီးဆုံး တစ်ခုပါ
SolarWinds ဆိုတာ ကုမ္ပဏီကြီးတွေ၊ အစိုးရဌာနတွေတောင် သုံးတဲ့ network စောင့်ကြည့်တဲ့ software ပါ။ Hacker တွေက SolarWinds ရဲ့ update စနစ်ကို ဖောက်ပြီး update ထဲမှာ backdoor ထည့်လိုက်တယ်။ အမေရိကန်ရဲ့ အစိုးရဌာနကြီးတွေ၊ Microsoft လို ကုမ္ပဏီကြီးတွေ အပါအဝင် သုံးစွဲသူ ၁၈,၀၀၀ လောက်က အဲဒီ update ကို ပုံမှန်အတိုင်း install လုပ်မိသွားတယ်။ ဘယ်သူမှ မသံသယခဲ့ဘူး — update က တရားဝင် signature ပါ ပါတယ်လေ။
၂။ event-stream (၂၀၁၈) — npm package လေး တစ်ခုပါ
JavaScript programmer တွေ အများကြီး သုံးတဲ့ event-stream ဆိုတဲ့ package လေးတစ်ခုရှိတယ်။ မူလ ရေးသားသူက မထိန်းသိမ်းနိုင်တော့လို့ တခြားသူတစ်ယောက်ကို လွှဲပေးလိုက်တယ်။ အဲဒီလူအသစ်က package ထဲမှာ Bitcoin wallet ကို ခိုးတဲ့ code ကို တိတ်တိတ်လေး ထည့်လိုက်တယ်။ Package ကို update လုပ်တဲ့ developer တိုင်းက အဲဒီ code ကို ကိုယ့် project ထဲ ယူမိသွားတယ်။
၃။ XZ Utils (၂၀၂၄) — ကံကောင်းလို့ မိသွားတာ
Linux system တိုင်းနီးပါးမှာ ပါတဲ့ XZ Utils ဆိုတဲ့ file compress လုပ်တဲ့ tool ထဲမှာ backdoor ထည့်ဖို့ hacker တစ်ယောက်က ၂ နှစ်လောက် စိတ်ရှည်ရှည်နဲ့ ကြိုးစားခဲ့တယ်။ သူက ပထမ စေတနာ့ဝန်ထမ်း maintainer လို ဟန်ဆောင်တယ်၊ တဖြည်းဖြည်း ယုံကြည်မှု ရယူတယ်၊ နောက်ဆုံးမှာ backdoor ကို ထည့်လိုက်တယ်။ ကံကောင်းထောက်မစွာ Microsoft engineer တစ်ယောက်က သူ့ရဲ့ test server နှေးနေတာကို သတိထားမိလို့ အချိန်မီ မိသွားတယ်။ မဟုတ်ရင် ကမ္ဘာတစ်ဝန်းက server သန်းချီမှာ backdoor ပါသွားမှာ။
ကိုယ်က ဘယ်လို ကာကွယ်မလဲ?
ဒါက programmer တွေအတွက်ရော သာမန် user တွေအတွက်ပါ အရေးကြီးတယ်—
Dependency တွေကို လျှော့ပါ။ package ၁၀၀၀ သုံးတဲ့ project က package ၁၀ ခုပဲ သုံးတဲ့ project ထက် တိုက်ခိုက်ခံရနိုင်ခြေ အဆများစွာ ပိုများတယ်။ တကယ် မလိုတဲ့ library ကို မထည့်ပါနဲ့
Lockfile ကို သုံးပါ။ package-lock.json ဒါမှမဟုတ် requirements.txt ထဲက version အတိအကျကို သုံးပါ — “နောက်ဆုံးဗားရှင်း” ကို အလိုလို ယူတာက အန္တရာယ်များတယ်
Update လုပ်ခင် နည်းနည်း စောင့်ပါ။ library အသစ်ထွက်တာနဲ့ ချက်ချင်း update လုပ်တာထက် ရက်အနည်းငယ် စောင့်ပြီး တခြားသူ ပြဿနာ တက်သလား ကြည့်ပါ
Maintainer တွေရဲ့ 2FA ကို စစ်ပါ။ package တစ်ခု နာမည်ကြီးပေမယ့် maintainer ရဲ့ account လုံခြုံမှု ညံ့ရင် အဲဒီ package လည်း မလုံခြုံဘူး
သာမန် user အနေနဲ့ — software ကို တရားဝင် source ကပဲ download လုပ်ပါ။ Crack version၊ ထူးဆန်းတဲ့ mirror site တွေက supply chain attack ရဲ့ အလွယ်ဆုံး ပစ်မှတ်ပါ
Supply chain attack ရဲ့ ကြောက်စရာ အကောင်းဆုံး အချက်က ဒါပါ — သင် ဘာမှ မမှားဘဲ တိုက်ခိုက်ခံရနိုင်တယ်။ ဒါကြောင့် “ငါ့စက်ကို ငါ ဂရုစိုက်တယ်” ဆိုတာထက် “ငါသုံးတဲ့ software တွေ ဘယ်က လာတာလဲ” ဆိုတာကိုပါ ဂရုစိုက်ရမယ့် ခေတ်ကို ရောက်နေပြီ။ 🙂