Xygeni သည် မကြာသေးမီက ၂၀၂၅ ခုနှစ်တွင် software supply chain တိုက်ခိုက်မှုများ၏ ရှုခင်းတွင် စိုးရိမ်ဖွယ်ပုံစံတစ်ခုကို တွေ့ရှိခဲ့သည်။လူကြိုက်များသော package manager နှစ်ခုတွင် ပေါ်ထွက်လာခဲ့သည်- PyPI နှင့် npmကျွန်ုပ်တို့၏ လက်ရှိခြိမ်းခြောက်မှုထောက်လှမ်းရေးကြိုးပမ်းမှုများ၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့်၊Xygeni ရဲ့ Malware ကြိုတင်သတိပေးချက် (MEW) tool သည် ယခင်က အခြား registry သို့ upload လုပ်ထားသော malicious package ၏ ထူးခြားသော်လည်း နည်းစနစ်ပိုင်းဆိုင်ရာအရ အလားတူဖြစ်ရပ်တစ်ခုကို ဖော်ထုတ်ခဲ့သည်။ ဤကိစ္စသည် ခြိမ်းခြောက်မှုလုပ်ဆောင်သူများသည် ဂေဟစနစ်တစ်လျှောက်တွင် အထူးသဖြင့် တိုက်ခိုက်မှုနည်းပညာများကို ပြန်လည်အသုံးပြုနေပုံကို မီးမောင်းထိုးပြသည်။ အန္တရာယ်ရှိသော Python package များ နှင့် အန္တရာယ်ရှိသော npm ပက်ကေ့ဂျ်များ၎င်းသည် open source ထောက်ပံ့ရေးကွင်းဆက်များထဲသို့ အန္တရာယ်ရှိသော package များ ထိုးဖောက်ဝင်ရောက်နိုင်ခြေကို တိုးစေသည်။
Xygeni ရဲ့ MEW: ဆင်တူမှုတွေကို ရှာဖွေခြင်း
Xygeni ရဲ့ MEW tool ကို open-source registry တွေမှာ ထုတ်ဝေပြီးတာနဲ့ အထူးသဖြင့် ၂၀၂၅ ခုနှစ်မှာ Software Supply Chain Attacks နဲ့ ဆက်စပ်နေတဲ့ malicious package တွေကို ရှာဖွေဖော်ထုတ်ပြီး flag လုပ်ဖို့အတွက် တည်ဆောက်ထားပါတယ်။ သံသယဖြစ်ဖွယ် အပြုအမူတွေအတွက် package အသစ်တွေကို ခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့် အလုပ်လုပ်ပါတယ်။
ဤကိစ္စတွင် နှစ်ခုကို ဖော်ထုတ်ခဲ့သည်၊ အန္တရာယ်ရှိသော Python package များ (graphalgo PyPI မှာ) နဲ့ အန္တရာယ်ရှိသော npm ပက်ကေ့ဂျ်များ (express-cookie-parser npm မှာ)။
ဆော့ဖ်ဝဲလ်ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှုများတွင် အန္တရာယ်ရှိသော Python နှင့် npm အထုပ်များ (၂၀၂၅)
ကျွန်ုပ်တို့ရဲ့ သတိပေးချက်တွေကို နှိုးဆွပေးတဲ့ မျှဝေထားတဲ့ ဝိသေသလက္ခဏာတွေကို လေ့လာကြည့်ရအောင်-
စာပို့
သူတို့နှစ်ယောက်စလုံးဟာ လူကြိုက်များတဲ့ ရှိပြီးသား package တွေကို အတုယူဖို့ ကြိုးစားခဲ့ကြပါတယ်။
- ဂရပ်ဖယ်လ်ဂို (PyPI)"ဂရပ်များနှင့် ကွန်ရက်များ ဖန်တီးခြင်းနှင့် ကိုင်တွယ်ခြင်းအတွက် Python package။"အမည်ရှိ အသုံးပြုသူတစ်ဦးက အပ်လုဒ်လုပ်ထားသည်" "လာရီတက်ခ်" ၂၀၂၅ ခုနှစ်၊ ဇွန်လ ၁၃ ရက်နေ့တွင် ဤ package သည် နောက်ပိုင်းတွင် graphdict ဟု အမည်ပြောင်းလဲခဲ့သော မူရင်း non-malicious graphalgo project အတွက် PyPi အစားထိုးတစ်ခုအဖြစ် မိတ်ဆက်ခဲ့သည်။
- express-cookie-parser (npm)ဒီ package က လူသိများတဲ့ cookie-parser package ကို တုပပြီး သူ့ရဲ့ cookie-parser package ကိုတောင် တုပထားပါတယ်။ README.md။ ထိုကဲ့သို့ အယောင်ဆောင်ခြင်းသည် ရှိပြီးသားယုံကြည်မှုကို အသုံးချရန် ဂန္ထဝင်နည်းဗျူဟာတစ်ခုဖြစ်သည်။
ပထမခံစစ်အဖြစ် မှုန်ဝါးဝါးဖြစ်အောင်ပြုလုပ်ခြင်း
ပက်ကေ့ဂျ်နှစ်ခုစလုံးသည် မူရင်းဖိုင်များအတွင်း ၎င်းတို့၏ အန္တရာယ်ရှိသော ကုဒ်ကို မှုန်ဝါးစေခဲ့သည်။ ဂရပ်ဖ်အယ်လ်ဂိုရှုပ်ထွေးနေသော ကုဒ်ကို အတွင်းတွင် တွေ့ရှိခဲ့သည် /utils/load_libraries.py. ဖြစ်လာခဲ့လျှင် အမြန်-ကွတ်ကီး-ပါဆာ, cookie-loader.min.js ရှုပ်ထွေးနေသော payload ပါဝင်သည်။
ဤရှုပ်ထွေးမှု၏ ကနဦးအလွှာကို ပေါ့ပေါ့တန်တန်စစ်ဆေးမှုနှင့် static analysis ကို အနှောင့်အယှက်ဖြစ်စေရန် အသုံးပြုလေ့ရှိသည်။ ရှုပ်ထွေးမှုမှာ အတော်လေးရိုးရှင်းပါသည်- ZLib compression ကို ထပ်ခါတလဲလဲပြုလုပ်ခြင်းနှင့် Base64 encoding တို့ဖြစ်သည်။ ဤရှုပ်ထွေးမှုအမျိုးအစားသည် software သည် ၎င်း၏အပြုအမူကို ဖုံးကွယ်ရန်ကြိုးစားနေကြောင်း ရှင်းရှင်းလင်းလင်းဖော်ပြသည်။ အခြားအထောက်အထားများနှင့်အတူ၊ ၎င်းသည် Xygeni MEW အား package များကို malware အဖြစ် အမျိုးအစားခွဲခြားနိုင်စေခဲ့သည်။ အတည်ပြုချက်အဆင့်တွင်၊ ကျွန်ုပ်တို့၏ reviewer များသည် အန္တရာယ်ရှိသော dropper အဆင့်ကို ဖော်ထုတ်သည့် deobfuscation script တစ်ခုကို ချက်ချင်းပြင်ဆင်ခဲ့ကြသည်။
အဆင့်များစွာပါဝင်သော Payload ပို့ဆောင်မှုနှင့် မျှဝေထားသော မူလနေရာ
ပက်ကေ့ဂျ်နှစ်ခုစလုံးသည် ကနဦးအဖြစ် လုပ်ဆောင်ခဲ့သည် "ဆေးလိပ်"တကယ့် payload အတွက် ဇာတ်ခုံကို ပြင်ဆင်ပေးခဲ့တယ်။ သူတို့မှာ ဘုံပြင်ပ "တစ်ခုကို မျှဝေခဲ့တယ်"အစေ့"ဖိုင် URL:"https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
ဤတူညီသော ပြင်ပ seed ဖိုင်သည် shared threat actor ၏ အားကောင်းသော အညွှန်းကိန်းတစ်ခုဖြစ်သည်။ စိတ်ဝင်စားစရာကောင်းသည်မှာ ဤ seed ဖိုင်၏ အကြောင်းအရာသည် ရိုးရှင်းသော environment variable များ (ဥပမာ JWT_SECRET၊ PORT) ဖြစ်ပုံရပြီး ၎င်း၏ တကယ့် function ကို စစ်ဆေးခြင်းကို မှားယွင်းစေနိုင်သည်။
DGA ပါရှိသော Dynamic C2 Resolution
ဤအန္တရာယ်ရှိသော package များတွင်တွေ့ရှိရသော ရှုပ်ထွေးသောနည်းဗျူဟာတစ်ခုမှာ Command and Control (C2) server ကို dynamically ဖြေရှင်းရန် Domain Generation Algorithm (DGA) ကိုအသုံးပြုခြင်းဖြစ်သည်။ ၂၀၂၅ ခုနှစ်တွင် အဆင့်မြင့် software supply chain တိုက်ခိုက်မှုများတွင် မကြာခဏတွေ့ရလေ့ရှိသော ဤနည်းပညာသည် seed file ၏ content မှရရှိသော SHA256 hash ကို အခြား hardcoded တန်ဖိုးများနှင့်ပေါင်းစပ်အသုံးပြုသည်။ ထိုသို့ပြုလုပ်ခြင်းဖြင့် C2 အခြေခံအဆောက်အအုံသည် မကြာခဏပြောင်းလဲနေပြီး ရိုးရာ blacklisting ကို ထိရောက်မှုနည်းပါးစေသည်။ ဤကိစ္စတွင် npm variant သည် fixed value ကိုအသုံးပြုခဲ့သည်။ 496AAC7E ၎င်း၏ DGA ယုတ္တိဗေဒ၏ အစိတ်အပိုင်းတစ်ခုအဖြစ်။
မြဲမြံခြင်း
တိုက်ခိုက်သူနှစ်ဦးစလုံးသည် ထိခိုက်ခံရသောစနစ်များတွင် ကြာရှည်ခံသောတည်ရှိမှုကို တည်ဆောက်ရန် ကြိုးပမ်းခဲ့ကြသည်။ ၎င်းတို့၏ ဗျူဟာတွင် ဖိုင်တစ်ခုကို ပစ်ချခြင်း ပါဝင်သည်။ startup.py (PyPi အတွက်) သို့မဟုတ် startup.js (npm အတွက်)၊ မတူညီသော operating system များ (Windows၊ Linux၊ macOS) တစ်လျှောက်ရှိ အသုံးများသော Google Chrome user data directory များထဲသို့။
အကောင်အထည်ဖော်ပြီးနောက် သန့်ရှင်းရေး
ခြေရာခံမှုများကို အနည်းဆုံးဖြစ်စေရန်အတွက်၊ malicious script နှစ်ခုစလုံးသည် သန့်ရှင်းရေးလုပ်ငန်းများကို လုပ်ဆောင်ခဲ့သည်။ ၎င်းတွင် ၎င်းတို့၏ ကနဦး dropper ဖိုင်များကို ဖျက်ခြင်း ပါဝင်သည်။load_libraries.py, cookie-loader.min.js) နှင့် တရားဝင် package ဖိုင်များကို ပြုပြင်ခြင်း (__init__.py, index.js) ယခုဖျက်လိုက်သော အစိတ်အပိုင်းများသို့ ရည်ညွှန်းချက်များကို ဖယ်ရှားရန်။
Malicious Python နှင့် npm Packages များတွင် Compromise ၏ ညွှန်ပြချက်များ
- PyPI ပက်ကေ့ချ်: graphalgo (larrytech မှထုတ်ဝေသည်၊ ၂၀၂၅ ခုနှစ်၊ ဇွန်လ ၁၃ ရက်)
- npm ပက်ကေ့ဂျ်express-cookie-parser (အထူးသဖြင့် ဗားရှင်း 1.4.12)
- မျှဝေထားသော မျိုးစေ့ URL သို့ ဝင်ရောက်ခွင့်:
https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
- အမြဲတမ်းဖိုင်အမည်များ:
startup.py(စပါးအုံး)startup.js(ဂျာဗားဆက်) - အဖြစ်များသော အမြဲတမ်းလမ်းကြောင်းများ (OS-dependent)Google Chrome အသုံးပြုသူဒေတာလမ်းညွှန်များအတွင်း (ဥပမာ-
AppData\Local\Google\Chrome\UserData\Scripts\Windows တွင်,~/.config/google-chrome/Scripts/Linux စသည်တို့တွင်)။
၂၀၂၅ ခုနှစ် ဆော့ဖ်ဝဲလ် ထောက်ပံ့ရေး ကွင်းဆက် တိုက်ခိုက်မှုများတွင် အန္တရာယ်ရှိသော ပက်ကေ့ဂျ်များကို မည်သို့ကာကွယ်ရမည်နည်း
ဆော့ဖ်ဝဲရေးသားသူများအတွက် အကြံပြုထားသော ချဉ်းကပ်မှု
ဤဖြစ်ရပ်သည် ၂၀၂၅ ခုနှစ်တွင် ဆော့ဖ်ဝဲလ်ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှုများ၏ ပြောင်းလဲနေသောခြိမ်းခြောက်မှုရှုခင်းတွင် အဖိုးတန်လေ့လာမှုတစ်ခုအဖြစ် ဆောင်ရွက်ပါသည်။ ၎င်းသည် အန္တရာယ်ရှိသော Python package များနှင့် အန္တရာယ်ရှိသော npm package များသည် ယုံကြည်စိတ်ချရသောဂေဟစနစ်များထဲသို့ မည်သို့ခိုးဝင်နိုင်ပြီး အချိန်နောက်ကျသည်အထိ ထောက်လှမ်းမှုကို ရှောင်ရှားနိုင်ကြောင်း မီးမောင်းထိုးပြသည်။ ထို့ကြောင့် အစောပိုင်းထောက်လှမ်းခြင်း၊ စမတ်ကိရိယာများနှင့် ကြိုတင်ကာကွယ်သည့်စနစ်သန့်ရှင်းရေးတို့သည် မည်သည့်လုံခြုံသော DevOps workflow ၏ မရှိမဖြစ်အစိတ်အပိုင်းများဖြစ်လာသည်။ developer များအနေဖြင့် အောက်ပါတို့ကို ထည့်သွင်းစဉ်းစားရန် အားပေးပါသည်-
မှီခိုမှု ပြန်လည်သုံးသပ်ခြင်း
သင့်ပရောဂျက်များတွင် ပါဝင်ပါက ဂရပ်ဖ်အယ်လ်ဂို or အမြန်-ကွတ်ကီး-ပါဆာ၎င်းတို့ကို ဖယ်ရှားခြင်း ဆက်လုပ်ခြင်းသည် ပညာရှိရာရောက်ပါလိမ့်မည်။
- PyPI အတွက်:
pip uninstall graphalgo - npm အတွက်:
npm uninstall express-cookie-parser
စနစ်သန့်ရှင်းရေး
စနစ်တစ်ခုလုံးကို စကင်ဖတ်စစ်ဆေးဖို့ စဉ်းစားပါ။ မမျှော်လင့်ထားတဲ့ လမ်းကြောင်းတွေ ရှိမရှိကို Chrome အသုံးပြုသူဒေတာလမ်းညွှန်လမ်းကြောင်းတွေမှာ ကိုယ်တိုင်စစ်ဆေးဖို့လည်း အကြံပြုလိုပါတယ်။ startup.py or startup.js ဖိုင်များကို။
လုံခြုံရေးဆောင်ရွက်ချက်များ
- မှီခိုမှုအသစ်များကို အကဲဖြတ်ပါမရင်းနှီးသော ထုတ်ဝေသူများထံမှ ပက်ကေ့ဂျ်များကို အာရုံစိုက်၍ ပေါင်းစည်းခြင်းမပြုမီ ပက်ကေ့ဂျ်အသစ်များကို သေချာစွာ အကဲဖြတ်ရန် လုပ်ရိုးလုပ်စဉ်တစ်ခု ချမှတ်ပါ။
- လုံခြုံရေးကိရိယာများကို ပေါင်းစပ်ပါXygeni ရဲ့ MEW လိုမျိုး tool တွေနဲ့အတူ တခြား Software Composition Analysis တွေလည်း ပါဝင်ပါတယ်။SCA) ဖြေရှင်းချက်များသည် သံသယဖြစ်ဖွယ် အပြုအမူများနှင့် အားနည်းချက်များကို ဖော်ထုတ်ခြင်းဖြင့် အရေးကြီးသော ကာကွယ်ရေးအလွှာကို ပေးစွမ်းနိုင်သည်။
- အခွင့်အရေးအနည်းဆုံး: အနည်းဆုံးအခွင့်ထူးခံမှုမူဖြင့် ဖွံ့ဖြိုးတိုးတက်ရေးပတ်ဝန်းကျင်များကို လည်ပတ်ခြင်းသည် ညှိနှိုင်းမှုတစ်ခု၏ အလားအလာရှိသောသက်ရောက်မှုကို ကန့်သတ်ရန် ကူညီပေးနိုင်ပါသည်။
- Network Awareness: ပုံမှန်မဟုတ်သော ချိတ်ဆက်မှုများအတွက် ပြင်ပကွန်ရက်အသွားအလာကို စောင့်ကြည့်ခြင်းသည် DGA မှထုတ်လုပ်သော C2 ဆက်သွယ်မှုများကို တစ်ခါတစ်ရံတွင် ဖော်ထုတ်နိုင်သည်။
အဓိကအစိတ်အပိုင်းများ load_libraries.py (graphalgo မှ)
download_remote_content(): သတ်မှတ်ထားသော URL များမှ ဖိုင်များကို ရယူခြင်းကို ကိုင်တွယ်သည်။run_process()ပြင်ပ Python script များကို သီးခြားနည်းလမ်းဖြင့် လုပ်ဆောင်ပြီး output ကို လျှို့ဝှက်ထားရန် ဖိနှိပ်ထားသည်။get_output_file_path(): တည်မြဲသော startup.py ဖိုင်အတွက် အကောင်းဆုံးစနစ်တည်နေရာကို ဆုံးဖြတ်ပေးသည်။remove_self(): ကနဦး အန္တရာယ်ရှိသော ဖိုင်များနှင့် package ပြုပြင်မွမ်းမံမှုများကို အကောင်အထည်ဖော်ပြီးနောက် ရှင်းလင်းခြင်းကို စီစဉ်ပေးသည်။simple_shift_encrypt()/simple_shift_decrypt()DGA အကောင်အထည်ဖော်မှုအတွက် အရေးကြီးသော ဆက်သွယ်ရေးလမ်းကြောင်းများကို မှုန်ဝါးစေရန်အတွက် စိတ်ကြိုက်ကုဒ်ဝှက်လုပ်ဆောင်ချက်များ။load_libraries(): ကနဦးဒေါင်းလုဒ်မှ နောက်ဆုံး payload လုပ်ဆောင်ခြင်းနှင့် သန့်ရှင်းရေးလုပ်ခြင်းအထိ အဆင့်များစွာပါဝင်သော လုပ်ငန်းစဉ်တစ်ခုလုံးကို ညှိနှိုင်းဆောင်ရွက်ပေးသည့် ဗဟိုလုပ်ဆောင်ချက်။
နောက်ဆက်တွဲ
MEW မှ ဖော်ထုတ်တွေ့ရှိထားသော အခြားအန္တရာယ်ရှိသော package များကဲ့သို့ပင်၊ dependency firewall သည် ဤအန္တရာယ်ရှိသော package များကို ၎င်းတို့၏ dependency များတွင် ထည့်သွင်းမည့် အသုံးပြုသူများကို ချက်ချင်းကာကွယ်ပေးခဲ့သည်။ အတည်ပြုပြီးနောက်၊ ကျွန်ုပ်တို့သည် registry နှစ်ခုလုံးအတွက် အသိပေးချက်လုပ်ထုံးလုပ်နည်းများကို လိုက်နာခဲ့ပြီး ပြန်လည်သုံးသပ်ပြီးနောက် package နှစ်ခုလုံးကို ဖယ်ရှားခဲ့သည်။





