TL; DR
၂၀၂၆-၀၅-၂၁ ရက်နေ့တွင် npm ထုတ်ဝေသူ jaggle ဗားရှင်းကိုးခုထွက်ရှိ (1.0.0 ဖြတ်. 1.0.8) ၏ @jaggle/resizeobserves နှစ်နာရီခန့် ကာလအတွင်းမှာ။
အထုပ်သည် တရားဝင်၏ typosquat ဖြစ်သည် @juggle/resize-observer polyfill — အပတ်စဉ် ဒေါင်းလုဒ်သန်းပေါင်းများစွာရှိသော ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည့် package တစ်ခု — သို့သော် ResizeObserver အကောင်အထည်ဖော်မှုကို အမှန်တကယ် ပို့ဆောင်ပေးခြင်း မရှိပါ။
ယင်းအစား၊ အထုပ်၏ တပ်ဆင်ပြီးနောက် ချိတ် Bundle Python payload တစ်ခုကို install လုပ်ပြီး၊ persistence ကို platform-native-looking runtime broker အဖြစ် မှတ်ပုံတင်ပြီး၊ cryptocurrency transaction များကို ပစ်မှတ်ထားသည့် cross-platform clipboard hijacker တစ်ခုကို ဖြန့်ကျက်ပါသည်။
Linux ကို တည်ကြည်မှု ပေါ်လာသည် python3-dbus-helper, MacOS as com.apple.python.runtimeနှင့် Windows ကို as PyRuntimeBroker.
payload သည် clipboard တစ်လျှောက်ရှိ wallet လိပ်စာများအတွက် အဆက်မပြတ်စောင့်ကြည့်နေသည် blockchain ၄၀ ကျော် ထို့အပြင် မိတ္တူကူးထားသော လိပ်စာများကို တိုက်ခိုက်သူထိန်းချုပ်ထားသော ပိုက်ဆံအိတ်များဖြင့် တိတ်တဆိတ် အစားထိုးပါသည်။
malware သည် outbound C2 အခြေခံအဆောက်အအုံမရှိဘဲ ဒေသတွင်းတွင် အပြည့်အဝလည်ပတ်သောကြောင့် clipboard အစားထိုးမှုကို exfiltration ယန္တရားအဖြစ်သို့ ပြောင်းလဲစေသည်။
အဓိက IOC ကတော့ package name ကိုယ်တိုင်ပါပဲ။ @jaggle/resizeobserves — “jaggle” မှာ ဖြုတ်လိုက်တဲ့ သရအက္ခရာနဲ့ “resizeobserves” မှာ “s” ထည့်ထားတာ သတိပြုပါ။
ပြင်းထန်မှု: မြင့်မားသည်။
တိုက်ခိုက်မှု- ၎င်းမည်သို့အလုပ်လုပ်သည်
npm:@jaggle/resizeobserves သာမန်ကွန်ပျူတာမှာ malware နဲ့ မတူပါဘူး npm မြင်ကွင်း။ ယင်း README.md README သည် စာသားအတိုင်းဖြစ်သည် npm:@juggle/resize-observer — တူညီသော ကုဒ်နမူနာများ၊ တူညီသော အသုံးပြုမှု ညွှန်ကြားချက်များ၊ တူညီသော '@juggle/resize-observer' မှ { ResizeObserver } ကို တင်သွင်းပါ။ ကိုးကားချက်များ တစ်လျှောက်လုံး။ ကူးယူဖော်ပြမှုသည် အလွန်ပြည့်စုံလွန်းသောကြောင့် စာရွက်စာတမ်းများကို ကြည့်လိုက်သူတိုင်းသည် တရားဝင်ပက်ကေ့ဂျ်၏ စာရွက်စာတမ်းများကို ဖတ်နေသည်ဟု ထင်မြင်ကြလိမ့်မည်။
အဆိုပါ မြတ်စွာဘုရားဆန့်ကျင်ဘက်အနေနဲ့ ရှားပါးပါတယ်- မရှိပါဘူး repository လယ်ကွင်း၊ တစ်ခုတည်း ကျီငယ် ဝင်ရောက်မှုကို ညွှန်ပြသည် bin/clipboard-guardian.jsနှင့် တပ်ဆင်ပါ။ လုပ်ဆောင်သော script node npm-install.jsREADME ရဲ့ “အခြေခံအသုံးပြုမှု” ဥပမာတွေက tarball မှာ ဘယ်နေရာမှာမှ မရှိတဲ့ JavaScript အကောင်အထည်ဖော်မှုကို ရည်ညွှန်းပါတယ်။ package ထဲက တစ်ခုတည်းသော JavaScript ကတော့ install script ပါပဲ။
အဆင့် ၁ — npm သည် Python payload တစ်ခုတွင် postinstall bootstraps ပြုလုပ်ခြင်း
npm-install.js ပလက်ဖောင်း-သိရှိနိုင်ပါသည်။ ၎င်းသည် တည်နေရာကို ရှာဖွေသည် PIP ပုံသေရှာဖွေမှုလမ်းကြောင်းတစ်လျှောက်တွင် လုပ်ဆောင်နိုင်သော/usr/bin/pip3, /usr/local/bin/pip, ပြန်ကျသွားသည် python3 -m pip)၊ tarball directory မှ bundle လုပ်ထားသော Python package ကို install လုပ်ပြီး — Linux တွင် — ဆွဲယူသည်။ xclip or xsel မှတဆင့် တတ်လွယ်ခြင်း, pacmanဒါမှမဟုတ် dnf နှစ်ခုမှ ရှိနှင့်ပြီးသားဖြစ်ပါက-
များအသုံးပြုမှု –break-system-packages များ ရည်ရွယ်ချက်ရှိရှိ လုပ်ဆောင်ခြင်းဖြစ်သည်- ခေတ်မီ Linux ဖြန့်ချိမှုများသည် PEP 668 ၏ externally-managed-environment marker ကို enable လုပ်ထားသော Python ကို ပို့ဆောင်ပေးပြီး ၎င်းသည် site-wide pip install များကို default အနေဖြင့် ပိတ်ဆို့ပေးသည်။ install script သည် install လုပ်ခြင်းကို အတင်းအကျပ်လုပ်ဆောင်စေသည်။
script ကလည်း sudo-aware ပါ။ uid ကို run တဲ့အခါ ရလဒ်က sudo npm ထည့်သွင်းပါဇာတ်ညွှန်းမှာ ဒီလိုရေးထားပါတယ် SUDO_USER နှင့် ကျည်ဆန်များ ထွက်ရန် စကားဝှက်ရယူရန် ရှာရန် စစ်မှန်သော အသုံးပြုသူရဲ့ home directory မှာ၊ ပြီးရင် သူ့ရဲ့ persistence file တွေကို အဲဒီထဲမှာ write မလုပ်ဘဲ အဲဒီမှာ write လုပ်ပါတယ် / အမြစ်။ တည်တံ့နိုင်မှုသည် အသုံးပြုသူတစ်ဦးချင်းစီအတွက်ဖြစ်ပြီး စနစ်တစ်ခုလုံးအတွက် မဟုတ်ပါ။
အဆင့် ၂ — runtime-broker အမည်များအောက်တွင် Cross-OS တည်တံ့ခြင်း
Python package ကို install လုပ်ပြီးသည်နှင့်၊ script သည် operating system တစ်ခုချင်းစီတွင် မတူညီသောအမည်တစ်ခုအောက်တွင် auto-start entry တစ်ခုကို register လုပ်ပါသည်။
- Linux ကို — systemd အသုံးပြုသူယူနစ်တစ်ခု ~/.config/systemd/user/python3-dbus-helper.service။ ယူနစ်၏ ဖေါ်ပြချက် is Python D-Bus Runtime Helperscript သည် ၎င်းကို မှတစ်ဆင့် ဖွင့်ရန်လည်း ကြိုးစားသည် systemctl – အသုံးပြုသူကိုဖွင့်ပါ, အောက်က manual symlink ကို ပြန်သုံးပါ default.target.wants/ systemctl ပျက်ကွက်သွားတဲ့အခါ။ sudo အောက်မှာ run နေရင် script က အောက်ပါအတိုင်း ပြောင်းသွားပါတယ်။ sudo -u systemctl – အသုံးပြုသူအတူ XDG_RUNTIME_DIR user-bus ခေါ်ဆိုမှု အလုပ်လုပ်စေရန် သတ်မှတ်ပါ။
- MacOS — LaunchAgent ပလက်စတစ်တစ်ခု ~/Library/LaunchAgents/com.apple.python.runtime.plist နှင့် RunAtLoad=မှန်သည် နှင့် KeepAlive = trueထို့နောက် မှတစ်ဆင့် တင်သည် launchctl load.
- Windows ကို — PyRuntimeBroker အမည်ရှိ Scheduled Task တစ်ခုသည် PowerShell မှတစ်ဆင့် မှတ်ပုံတင်ထားသော လုပ်ဆောင်မှုအချိန်ကန့်သတ်ချက် သုည (ဆိုလိုသည်မှာ အချိန်ကုန်ခြင်းမရှိ) ဖြင့် AtLogOn ကို စတင်ခဲ့သည်။
အမည်သုံးခုစလုံးကို တစ်ချက်ကြည့်လိုက်ရုံဖြင့် ယုံကြည်နိုင်စရာရှိသည်။ python3-dbus-helper Linux desktop များပေါ်တွင် တရားဝင် Python-D-Bus ပေါင်းစပ်မှု၏ အမည်ပေးခြင်း သဘောတူညီချက်ကို လိုက်နာသည်။ com.apple.python.runtime ၎င်း၏ကိုယ်ပိုင်ဝန်ဆောင်မှုများအတွက် Apple ၏ reverse-DNS အညွှန်းကို အတုယူသည်။ PyRuntimeBroker Windows ရဲ့ ပဲ့တင်သံတွေ RuntimeBroker.exe — UWP အက်ပ်များအတွက် ခွင့်ပြုချက်တောင်းဆိုမှုများကို ကြားဝင်ဆောင်ရွက်ပေးသည့် စစ်မှန်သော၊ လက်မှတ်ရေးထိုးထားသော Microsoft ဝန်ဆောင်မှုတစ်ခု။ ဤအခြေအနေတွင် ၎င်းတို့ထဲမှ တစ်ခုမျှသည် Apple/Microsoft/Python ဝန်ဆောင်မှုအစစ်အမှန်များ မဟုတ်ဘဲ၊ လျင်မြန်စွာ မြင်သာအောင် စကင်ဖတ်စစ်ဆေးနေသော ကာကွယ်သူတစ်ဦး systemctl –အသုံးပြုသူစာရင်းယူနစ်များ or Get-ScheduledTask တုန်လှုပ်ဖို့ မဖြစ်နိုင်ပါ။
အဆင့် ၃ — clipboard hijacker
Python payload ကို install လုပ်ထားတဲ့နေရာ clipboard_guardian/guardian.pyသည် စနစ် clipboard ကို မီလီစက္ကန့် ၄၀၀ တိုင်း အဆုံးမဲ့ loop polling လုပ်ဆောင်သည်။ tick တစ်ခုချင်းစီတွင် လက်ရှိ clipboard ၏ အကြောင်းအရာများကို ဆွဲယူသည် pyperclip.paste() ပြီးတော့ Ethereum၊ Bitcoin၊ Monero၊ Solana၊ TRON၊ TON၊ Ripple၊ Litecoin၊ Dogecoin၊ Polkadot၊ NEAR၊ Cosmos၊ Algorand၊ Stellar၊ Cardano၊ Bitcoin Cash၊ Dash၊ Zcash၊ Aptos၊ Sui၊ Tezos၊ MultiversX၊ Harmony၊ Terra၊ Injective၊ Osmosis၊ Kava၊ Celestia၊ Nano၊ Filecoin၊ Ronin၊ Ergo၊ DigiByte၊ Hedera၊ BNB Smart Chain နဲ့ အခြား wallet-address format တွေကို ပါဝင်တဲ့ ကြိုတင်စုစည်းထားတဲ့ regular expression လေးဆယ်ကျော်စာရင်းနဲ့ ယှဉ်တွဲဖော်ပြထားပါတယ်။ default config (Sei၊ IOTA၊ Kaspa၊ Flow၊ Nervos၊ Decred၊ Ravencoin) မှာ ချွတ်ယွင်းနေပေမယ့် ဗလာဖြစ်နေတဲ့ တခြား config တွေ အများကြီးရှိပါတယ်။
ကိုက်ညီမှုတစ်ခု ရောက်ရှိလာသောအခါ၊ script သည် တိုက်ခိုက်သူ၏ ကွင်းဆက်အတွက် လိပ်စာကို ဖတ်သည် ~/.config/clipboard-guardian/config.json (သို့မဟုတ် ၎င်း၏ပလက်ဖောင်းနှင့် ညီမျှသည်) နှင့် clipboard ကို အစားထိုးစာသားဖြင့် overwrite လုပ်သည်-
ကွန်ရက် beacon မရှိပါဘူး။ clipper က အိမ်ပြန်မခေါ်ဘူး၊ ကူးစက်ခံရတဲ့ host တွေကို မှတ်ပုံတင်မထားဘူး၊ ဘာကိုမှ exfilt မလုပ်ဘူး။ exfiltration ဆိုတာ substitution လုပ်တာပါ။ user က သူတို့ရဲ့ wallet UI ကနေ recipient address ကို copy ကူးပြီး sending dialog ထဲ paste လုပ်တဲ့အခါ paste လုပ်ထားတဲ့ address က operator နဲ့ သက်ဆိုင်ပါတယ်။ ရန်ပုံငွေတွေကို user ဆီကို ပွင့်လင်းမြင်သာစွာ ဆုံးရှုံးပါတယ်။
ဒီမှာ ဘာတွေအသစ်ရှိလဲ
ယေဘုယျ crypto-clipper template နှင့် နှိုင်းယှဉ်ပါက အသေးစိတ်အချက်အလက်အနည်းငယ် ထင်ရှားပါသည်။
၁။ npm → Python crossover။ npm မှာတွေ့ရတဲ့ crypto-clipper အများစုဟာ pure JavaScript ဖြစ်ပြီး မကြာခဏဆိုသလို ရှုပ်ထွေးနေတတ်ပါတယ်... _0x array လည်ပတ်မှု သို့မဟုတ် အကဲဖြတ်ခြင်း(အာတဘ်(…)) stack များ။ ဤနမူနာသည် npm tarball ကို Python package — clean Python — အတွက် delivery wrapper အဖြစ်သာ အသုံးပြုပြီး pip သည် dependency installation ကို ကိုင်တွယ်နိုင်သည် (ပိုင်ပါကလစ်, ဆူတယ်, ရှိတာပဲ။ setproctitle) ပူးတွဲပါဖိုင်တွင် ကြေညာထားသည် pyproject.toml။ JavaScript ကို ကျော်လွှားရန် ရှုပ်ထွေးမှု မရှိပါ။ clipper ကိုယ်တိုင်က ရိုးရှင်းပြီး ဖတ်ရလွယ်ကူသော Python တစ်ခုဖြစ်သည်။
၂။ ယုတ္တိတန်မှုအတွက် Tri-OS persistence အညွှန်းများကို ရွေးချယ်ထားသည်။ cross-platform installer အများအပြားသည် generic names များအောက်တွင် persistence ကို မှတ်ပုံတင်ကြသည် (updater.service, helper.plist). ဒီနမူနာက OS တစ်ခုချင်းစီမှာ platform-native runtime broker တွေနဲ့ ဆင်တူတဲ့ label တွေကို ရွေးချယ်ရာမှာ အခက်အခဲရှိပါတယ်။ နာမည်ပေးခြင်းကသာ stealth အတွက် တစ်ခုတည်းသော ကြိုးပမ်းမှုပါ - rootkit မရှိ၊ userland ဖုံးကွယ်ထားခြင်းမရှိ၊ path obfuscation မရှိပါဘူး။ အလောင်းအစားကတော့ defenders တွေက audit ရှားပါတယ်။ ~/.config/systemd/အသုံးပြုသူ/ နှင့် အမည်ပေးထားသော ဝန်ဆောင်မှုတစ်ခု python3-dbus-helper ပေါ့ပေါ့ပါးပါး သုံးသပ်ချက်တွင် ထင်ရှားမည်မဟုတ်ပါ။
၃။ လုပ်ငန်းစဉ်-ခေါင်းစဉ် ဟန်ဆောင်ခြင်းသည် မှန်ကန်သော်လည်း၊ ခွဲခြမ်းစိတ်ဖြာမှုကို ဆန့်ကျင်သည့် အယူအဆမှာ ငြိမ်သက်နေသည်။ Python payload သည် ၎င်းကို သတ်မှတ်ပေးသည်။ _ဖုံးကွယ်_လုပ်ငန်းစဉ်() လုပ်ငန်းစဉ်ခေါင်းစဉ်ကို သတ်မှတ်ပေးသည့် function မှတစ်ဆင့် setproctitle (Linux/macOS) သို့မဟုတ် SetConsoleTitleW (ဝင်းဒိုး) — နှင့် အဓိက () ခေါ်ပါတယ်။ ဒါကြောင့် ps aux ပါ ပြပါလိမ့်မယ် python3-dbus-helper အစား python3 …/guardian.pyသို့သော်၊ တူညီသော module သည် is_monitor_running() သိရှိထားသော လုပ်ငန်းစဉ် စောင့်ကြည့်ရေးကိရိယာများကို စာရင်းပြုစုသည့် လုပ်ဆောင်ချက် (htop, ဘီတော့ပ်, Task Manager, Activity Monitor, Process Hacker, Resource Monitor, GNOME / KDE / Xfce / MATE စနစ် စောင့်ကြည့်ကိရိယာများ စသည်ဖြင့်) — နှင့် အဓိက () ဘယ်တော့မှ မခေါ်ပါဘူး။ user မှာ process monitor ဖွင့်ထားဖြစ်စေ မဖွင့်ထားဖြစ်စေ substitution loop ဟာ ခြွင်းချက်မရှိ လည်ပတ်ပါတယ်။ ပေးပို့ထားတဲ့ version မှာ function က dead code ပါ။ ယခင် iteration ကနေ ကျန်နေတဲ့ code ဒါမှမဟုတ် wired မလုပ်ရသေးတဲ့ feature အတွက် scaffolding ဖြစ်ဖို့များပါတယ်။ ဘယ်လိုပဲဖြစ်ဖြစ်၊ ထုတ်ဝေထားတဲ့ payload ရဲ့ anti-analysis မျက်နှာပြင်ဟာ process-title rename တစ်ခုဖြစ်ပြီး active monitor evasion မဟုတ်ပါဘူး။
၄။ ပေါင်းစပ်ထားသော config-merge အပြုအမူ။ npm-install.js ပုံသေပိုက်ဆံအိတ်စာရင်းကို ရေးသည် ~/.config/clipboard-guardian/config.json ပြီးတော့ config ဖိုင်တစ်ခုရှိပြီးသားဆိုရင် လက်ရှိတန်ဖိုးဗလာဖြစ်နေတဲ့ key တွေကို ပေါင်းထည့်ပါတယ်။ ဆိုလိုတာက အရင်က ကူးစက်ခံရဖူးပြီး config ကို တစ်စိတ်တစ်ပိုင်းသန့်ရှင်းရေးလုပ်ဖူးတဲ့ user တစ်ယောက် - ဥပမာ - empty လုပ်ခြင်းဖြင့် ethereum value — နောက်ဆက်တွဲ malicious package install လုပ်တိုင်း ပြန်လည်ပေါ်လာပါလိမ့်မယ်။ မည်သည့် code path မှာမှ persistence file ကို clean up လုပ်တာမျိုး မရှိပါဘူး။
| ရက်စွဲ / အချိန် (UTC) | အဖြစ်အပျက် |
|---|---|
2026-05-21 18:50:32 | @jaggle/resizeobserves@1.0.0 ထုတ်ဝေခဲ့သည်။ |
2026-05-21 19:55:55 | 1.0.1 ထုတ်ဝေပြီး — ပြင်ပစကင်ဖတ်ခြင်းဖြင့် ပထမဆုံးဗားရှင်းကို အလံပြထားသည်။ |
2026-05-21 19:58:10 | 1.0.2 ထုတ်ဝေခဲ့သည်။ |
2026-05-21 20:05:03 | 1.0.3 ထုတ်ဝေခဲ့သည်။ |
2026-05-21 20:09:24 | 1.0.4 ထုတ်ဝေခဲ့သည်။ |
2026-05-21 20:13:48 | 1.0.5 ထုတ်ဝေခဲ့သည်။ |
2026-05-21 20:41:52 | 1.0.6 ထုတ်ဝေခဲ့သည်။ |
2026-05-21 20:43:56 | 1.0.7 ထုတ်ဝေခဲ့သည် — ထည့်သွင်းသည် try/catch wallet-config ရေးသားရန် အဆင့်ကို ဝန်းရံပါ။ npm-install.js. |
2026-05-21 20:46:15 | 1.0.8 ထုတ်ဝေပြီး — ထည့်သွင်းသူကို အမည်ပြောင်းလိုက်ပါပြီ npm-install.js → npm-install.cjs (ဘိုက်-တူညီသော အကြောင်းအရာ)။ |
2026-05-22 | စီရင်ချက်များနှင့် IOC များထုတ်ဝေပြီး။ ဗားရှင်းများသည် ထုတ်ဝေချိန်တွင် (ဆက်လက်ထုတ်ဝေနေဆဲ) မှတ်ပုံတင်တွင် ရှိနေသေးသည်။ |
typosquat တစ်ယောက်အတွက်တောင် တစ်နာရီနဲ့ မိနစ်ငါးဆယ်ခြောက်အတွင်းမှာ ဗားရှင်းကိုးခုကို ရေးနိုင်ရင် အရမ်းမြန်ပါတယ်။ ပုံစံက... ထုတ်ဝေပြီး မီးရှို့ခြင်း လှုပ်ရှားမှု — registry ကို handle တစ်ခုတည်းအောက်မှာ ဖြည့်ပြီး detection ကို သူ့ရဲ့လမ်းကြောင်းအတိုင်း လုပ်ဆောင်စေကာ version တစ်ခုတည်းကို ဖယ်ရှားလိုက်တဲ့အခါ handle အသစ်တစ်ခုဆီ ရွှေ့ပါ။ run တစ်လျှောက် မြင်ရတဲ့ deltas တွေက cosmetic ပါပဲ- 1.0.1 ကို explicit ထည့်သွင်းထားပါတယ်။ /usr/bin/pip3pip search list (sudo-compatibility) သို့ -style paths များထည့်သွင်းခြင်း၊ 1.0.7 သည် wallet-config write ကို try/catch ဖြင့်ထုပ်ပိုးခြင်းနှင့် 1.0.8 သည် installer ကို အောက်ပါအတိုင်း အမည်ပြောင်းလဲခြင်း .JS သို့ .cjs ၎င်း၏ အကြောင်းအရာ ဘိုက်ကို တစ်ပုံစံတည်း ထိန်းသိမ်းထားစဉ်တွင်။ .cjs package များတွင် မရှင်းလင်းသော module resolution နှင့်ပတ်သက်သည့် npm သတိပေးချက်များဖြင့် tracks များကို အမည်ပြောင်းပါ "အမျိုးအစား" field ဖြစ်ပြီး အာရုံစိုက်မှုကို ဆွဲဆောင်နိုင်သော install-time noise ကို နှိမ်နင်းရန် ကြိုးပမ်းမှုတစ်ခု ဖြစ်နိုင်သည်။ အမှန်တကယ်ခိုးယူသည့် တစ်ခုတည်းသော အစိတ်အပိုင်းဖြစ်သော Python payload သည် ဗားရှင်းကိုးခုလုံးတွင် မပြောင်းလဲပါ။
ညှိနှိုင်းမှု၏ ညွှန်ပြချက်များ
packages
| ဂေဟစနစ် | အထုပ် | ဗားရှင်း | status |
|---|---|---|---|
| npm | @jaggle/resizeobserves | 1.0.0 ဖြတ်. 1.0.8 | ထုတ်ဝေချိန်တွင် တိုက်ရိုက်ထုတ်လွှင့်ပါသည်။ ဖယ်ရှားရန် တောင်းဆိုထားပါသည်။ |
ဖိုင်များနှင့် ဟာ့ရှ်များ
| path | မှတ်စုများ |
|---|---|
clipboard_guardian/guardian.py(md5 f7935c2c82bc881288611ab6cd634f17) | ထုတ်ဝေထားသော ဗားရှင်းကိုးခုလုံးတွင် တူညီသည် (1.0.0 ဖြတ်. 1.0.8)။ ညှပ်ကိရိယာ၏ ဝန်အား။ |
npm-install.js (1.0.0 – 1.0.7)npm-install.cjs (1.0.8) | Persistence installer; အဆုံးမှအဆုံးအထိ လုပ်ဆောင်ချက် အတူတူပါပဲ။ 1.0.7's .js နှင့် 1.0.8's .cjs byte များ တူညီကြသည်။ |
~/.config/clipboard-guardian/config.json | Linux persistence config နှင့် wallet bundle။ |
~/Library/Application Support/clipboard-guardian/config.json | macOS persistence config နှင့် wallet bundle။ |
%APPDATA%\clipboard-guardian\config.json | Windows persistence config နှင့် wallet bundle။ |
~/.config/systemd/user/python3-dbus-helper.service | Linux အလိုအလျောက်စတင်မှု တည်တံ့ခြင်း။ |
~/Library/LaunchAgents/com.apple.python.runtime.plist | macOS LaunchAgent တည်တံ့ခိုင်မြဲမှု။ |
~/Library/Logs/com.apple.python.runtime.log | အေးဂျင့်အတွက် macOS stdout/stderr မှတ်တမ်း။ |
Scheduled Task PyRuntimeBroker | Windows အလိုအလျောက်စတင်သည့် လုပ်ငန်း (AtLogOn, အချိန်ကုန်ခြင်းမရှိပါ)။ |
အပြုအမူဆိုင်ရာ အညွှန်းများ
| signal | ဖေါ်ပြချက် |
|---|---|
pip install --break-system-packages npm postinstall မှ | PEP 668 ကာကွယ်မှုများကို ကျော်လွှား၍ ဆိုက်တစ်ခုလုံးအတွက် Python ထည့်သွင်းမှုကို အတင်းအကျပ် လုပ်ဆောင်သည်။ |
apt-get install -y xclip (သို့မဟုတ် pacman/dnf) | package ထည့်သွင်းစဉ်အတွင်း Linux တွင် clipboard utilities များကို ထည့်သွင်းသည်။ |
python3-dbus-helper.service systemd အသုံးပြုသူယူနစ် | ဖြစ်နိုင်ခြေရှိသော runtime-helper အမည်ဖြင့် တည်တံ့မှုကို မှတ်ပုံတင်ထားသည်။ |
com.apple.python.runtime LaunchAgent | တရားဝင် Apple စနစ်လမ်းကြောင်းများပြင်ပရှိ တည်တံ့မှုအညွှန်း။ |
PyRuntimeBroker စီစဉ်ထားသောတာဝန် | တရားဝင် installer အရင်းအမြစ်မရှိဘဲ အတု Windows runtime broker တည်တံ့မှု။ |
Python လုပ်ငန်းစဉ်လို့ အမည်ပေးထားပြီး python3-dbus-helper တင်သွင်း pyperclip နှင့် psutil | ပြသထားသော လုပ်ငန်းစဉ်အမည်နှင့် တင်သွင်းထားသော စာကြည့်တိုက်များအကြား အပြုအမူဆိုင်ရာ မကိုက်ညီမှု။ |
| ပိုက်ဆံအိတ်လိပ်စာမိတ္တူကူးပြီးနောက် ကလစ်ဘုတ်ပြောင်းလဲမှုများ ~0.4s | cryptocurrency လိပ်စာအစားထိုးမှု၏ လက်မှတ်အပြုအမူ။ |
တိုက်ခိုက်သူ ပိုက်ဆံအိတ် အထုပ် (ခံစစ်သမား ရှာဖွေနေသော စာရင်း)
ပိုက်ဆံအိတ်စာရင်းကို hard-coded ဖြင့် ပို့ဆောင်ပေးသည် npm-install.js နှင့် clipboard_guardian/guardian.py။ ကာကွယ်သူများသည် စာရင်းကို blocklist (corporate wallets မှ ဤလိပ်စာများသို့ မည်သည့်ငွေလွှဲပြောင်းမှုကိုမဆို သံသယဖြစ်ဖွယ်အဖြစ် သဘောထားပါ) နှင့် hunting key (ဤ string များထဲမှ တစ်စုံတစ်ရာကို အထောက်အထားမခိုင်လုံသော config ဖိုင်တွင် ရှိနေခြင်း၊ artifact တည်ဆောက်ခြင်း သို့မဟုတ် developer စက်တွင် ရှိနေခြင်းကို infection indicator အဖြစ် သဘောထားပါ) နှစ်မျိုးလုံးအဖြစ် အသုံးပြုနိုင်သည်။
တိုက်ခိုက်သူ ပိုက်ဆံအိတ် အထုပ်
| ကွင်းကြိုး | လိပ်စာ |
|---|---|
| အီသီယိုးယမ် / ဘီအက်စ်စီ | 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| ရိုနင် (EVM) | ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| Bitcoin | bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y |
| Bitcoin ငွေ | bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt |
| Litecoin | ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe |
| Dogecoin | DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy |
| dash | XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS |
| Zcash | t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M |
| DigiByte | DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH |
| Monero | 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf |
| Solana | DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5 |
| Tron | TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2 |
| တန်ချိန် | UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr |
| ဂယက်ထ | r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H |
| polkadot | 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG |
| နီး | 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364 |
| ဠာ | cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e |
| Osmosis | osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t |
| Celestia | celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5 |
| ထိုးဆေး | inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh |
| Kava | kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux |
| သဟဇာတ | one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a |
| မှ Terra | terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x |
| Algorand | XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI |
| ကြယ် | GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE |
| Cardano | addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f |
| MultiversX | erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0 |
| သင့်လျော်သည်။ | 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e |
| Sui ကို | 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78 |
| nano | nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn |
| Filecoin | f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui |
| Tezos | tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk |
| ergo | 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA |
| Hedera | 0.0.10488092 |
regex လွှမ်းခြုံမှုရှိသော်လည်း default config တွင် wallet slot များ ဗလာဖြစ်နေသော chains — Sei၊ IOTA၊ Kaspa၊ Flow၊ Nervos၊ Decred၊ Ravencoin၊ Beacon-Chain BNB — များကို ဤ build တွင် တက်ကြွစွာ အစားထိုးခြင်းမပြုသော်လည်း တွေ့ရှိနိုင်ပါသည်။ ၎င်းတို့ကို substitution scope အစား monitoring scope အဖြစ် သဘောထားပါ။
အရင်းအမြစ်နှင့် လှုံ့ဆော်မှု
ကမ်ပိန်းသည် အရင်းအမြစ်မျက်နှာပြင်ကို ပါးလွှာစွာ ပေးဆောင်သည်။ အော်ပရေတာ၏ အထောက်အထားကို ကျွန်ုပ်တို့ အတည်မပြုနိုင်ပါ။ ကျွန်ုပ်တို့ မှတ်တမ်းတင်နိုင်သည်များ-
- ထုတ်ဝေသူ မက်တာဒေတာ။ npm အကောင့် ဂျက်ဂယ်လ် ၎င်း၏ အီးမေးလ်ကို အောက်ပါအတိုင်း စာရင်းပြုစုထားသည် olgascarlet@deltajohnsons.comဒိုမိန်း deltajohnsons.com ကျွန်ုပ်တို့ အတည်ပြုနိုင်သော ကော်ပိုရိတ် အထောက်အထားသို့ မဆုံးဖြတ်နိုင်ပါ။ npm အကောင့်တွင် အီးမေးလ် အတည်ပြုချက် မပြသပါ။ SCM အတည်ပြုခြင်း။ ဆက်စပ်နေသော အများသုံး GitHub ရှိနေခြင်း မရှိပါ။
- သိုလှောင်ရုံနယ်ပယ်။ အဆိုပါ မြတ်စွာဘုရား မပါရှိပါ repository လယ်ကွင်း။ တရားဝင် npm:@juggle/resize-observer ကြယ်ထောင်ပေါင်းများစွာနှင့် တက်ကြွသောပြဿနာများပါရှိသော အစစ်အမှန် GitHub repository တွင် ရမှတ်များရှိသည်။ npm UI တွင် အမြန်ဆုံးမြင်သာသောအချက်မှာ repository link မရှိခြင်းဖြစ်သည်။
- README ကူးယူဖော်ပြခြင်း။ README ပက်ကေ့ချ်သည် တရားဝင်ဖြစ်သည် @juggle/resize-observer README byte-for-byte အပါအဝင် တင်သွင်း ရည်ညွှန်းသော ဥပမာများ @juggle/resize-observer ၎င်းကိုယ်တိုင် (ထုတ်ဝေမှုပက်ကေ့ဂျ်မဟုတ်ပါ)။ အော်ပရေတာသည် တင်သွင်းမှုများကို ပြန်လည်ရေးသားရန်ပင် မကြိုးစားခဲ့ပါ - ယင်းသည် readme ကို ရုပ်သိမ်းလိုက်ပြီး လိုက်လျောညီထွေဖြစ်အောင် မလုပ်ထားကြောင်း အဖြစ်များသော အချက်ပြမှုတစ်ခုဖြစ်သည်။
- လှည့်ပတ်ဖို့ အခြေခံအဆောက်အအုံ မရှိဘူး။ C2 endpoint မရှိပါဘူး၊ DNS lookup မရှိပါဘူး၊ IP မရှိပါဘူး။ ဒီ malicious behavior ကို local clipper နဲ့ hard-coded wallet bundle မှာ အပြည့်အဝ encapsulate လုပ်ထားပါတယ်။ ဒါကြောင့် domain- ဒါမှမဟုတ် ASN-based pivoting ကို မရရှိနိုင်တော့ပါဘူး။ campaign တွေတစ်လျှောက် pivot လုပ်နေတဲ့ defenders တွေဟာ wallets တွေကို သူတို့ file ထဲမှာရှိတဲ့ clipper တွေနဲ့ hash-match လုပ်သင့်ပါတယ်။ package တွေတစ်လျှောက် wallet ကို ပြန်လည်အသုံးပြုခြင်းဟာ cross-campaign link တွေထဲမှာ အထိရောက်ဆုံး ကိုင်တွယ်ဖြေရှင်းနိုင်တဲ့ နည်းလမ်းတစ်ခုဖြစ်ပါတယ်။
- အမည်ပေးရွေးချယ်မှု။ @jaggle/resizeobserves ဇာတ်ကောင်တစ်ကောင် ကွာဟနေသလား @ဂျဂ်ဂယ် လူသိများတဲ့ စကားလုံးကနေ ကွဲလွဲတဲ့ အဓိပ္ပာယ်တစ်ခု resize-observer။ ပေါင်းစပ်တည်းဖြတ်အကွာအဝေးသည် glyphs နှစ်ခုဖြစ်သည်။ ၎င်းသည် ယေဘုယျ squat မဟုတ်ဘဲ ရည်ရွယ်ချက်ရှိရှိ အမြင်အာရုံတိုက်မိခြင်းဖြစ်သည်။
payload အပြုအမူအပေါ် အခြေခံသည့် လှုံ့ဆော်မှု- အခွင့်အရေးကို အသုံးချသည့် clipboard အစားထိုးမှုမှတစ်ဆင့် စစ်မှန်သောငွေရှာခြင်း။ အထောက်အထားများ ရိတ်သိမ်းခြင်း၊ host fingerprinting မရှိခြင်း၊ environment-variable reading မရှိပါ။ အော်ပရေတာသည် သားကောင်မည်သူဖြစ်သည်ကို ဂရုမစိုက်ပါ - သားကောင်၏ နောက်ထပ်လွှဲပြောင်းမှုသည် စာရင်းပါလိပ်စာများထဲမှ တစ်ခုတွင် ညွှန်ပြသည်ကို ၎င်းတို့ ဂရုစိုက်ကြသည်။ လေးဆယ်-ကွင်းဆက်လွှမ်းခြုံမှုသည် လက်တွေ့တွင်ရှိသော ထီပုံစံဖြစ်သည်- ကျယ်ပြန့်စွာ cast လုပ်ပါ၊ တန်ဖိုးမြင့် paste တစ်ခုသည် install တစ်ကြိမ်လျှင် N ခု ရောက်ရှိလာမည်ဟု မျှော်လင့်ပါသည်။
အော်ပရေတာက takedown ကို စိတ်မဝင်စားပုံပေါ်ပါတယ်။ တူညီတဲ့ scope အောက်မှာ နှစ်နာရီအတွင်း version ကိုးခုကို publish-and-burn handle လို့ ဖတ်ရပါတယ်- takedown latency မပြည့်မီ registry footprint ကို အများဆုံးဖြစ်အောင်လုပ်ပြီးမှ ဆက်လုပ်ပါ။ @ဂျက်ဂယ်လ် ရေးသားချိန်တွင် scope အသစ်တစ်ခုအောက်တွင် ပြန်လည်ထုတ်ဝေနေသော်လည်း၊ ကျွန်ုပ်တို့သည် lookalike scope များကို မျှော်လင့်ပါသည် (@ဂျက်ဂီ, @juggle-, @ဂျော့ဂ်ျ) အော်ပရေတာသည် အသက်ဝင်နေသေးပါက လာမည့်ရက်များအတွင်း ပေါ်လာရန်။
သက်ရောက်မှု၊ ခေတ်ရေစီးကြောင်းများနှင့် ကာကွယ်သူများ လုပ်ဆောင်သင့်သည်များ
သက်ရောက်မှု
လက်ရှိဒေတာစုမှ တကယ့်ငွေကြေး၏ သက်ရောက်မှုကို တိုင်းတာ၍မရပါ။ clipper သည် telemetry ကို မရေးသားဘဲ ခွဲခြမ်းစိတ်ဖြာမှု ဖြတ်တောက်ချိန်အထိ wallets များသည် အစားထိုးလွှဲပြောင်းမှုများကို လက်ခံရရှိနေသည်ကို မတွေ့ရှိရသေးပါ (စာရင်းပြုစုထားသော ကွင်းဆက်များ၏ နောက်ဆက်တွဲ လှည့်ကွက်သည် ကျွန်ုပ်တို့၏စာရင်းတွင် ရှိသည်)။ တရားဝင် npm:@juggle/resize-observer ပျမ်းမျှအားဖြင့် အပတ်စဉ် download အရေအတွက် ခုနစ်ဂဏန်းအထိ ရှိပြီး traffic မြင့်မားသော typosquat ပစ်မှတ်တစ်ခုလည်း ဖြစ်သည်။ အန္တရာယ်ရှိသော package သည် ထုတ်ဖော်ချိန်တွင် ၂၄ နာရီအောက်သာ live ဖြစ်နေပြီး ထိတွေ့မှုရှိသော လူဦးရေကို ကန့်သတ်ထားသော်လည်း သုညဖြစ်စေခြင်း မဟုတ်ပါ။
ခြေရာခံထိုက်သော ပေါက်ကွဲမှုအချင်းဝက်သည် တိုက်ရိုက်ဒေါင်းလုဒ်လုပ်ခြင်းမဟုတ်ပါ။ @jaggle/resizeobserves — အဲဒါတွေက သေးငယ်ဖို့များပါတယ်။ ဒါဟာ **transitive installs** ပါ- developer တစ်ယောက်က sandbox project ထဲကို package ထည့်တယ်၊ npm install, ပြီးတော့ install hook ကို ဘယ်တုန်းကမှ run ခဲ့တာကို မေ့သွားလိမ့်မယ်။ postinstall ကို process လုပ်ခဲ့တဲ့ စက်တိုင်းမှာ အခုဆိုရင် project ဟာ disk ပေါ်မှာ ရှိနေသေးသည်ဖြစ်စေ မရှိသည်ဖြစ်စေ auto-start လုပ်ထားတဲ့ per-user clipboard hijacker တစ်ခု ရှိလာပါပြီ။ package directory ကို ဖယ်ရှားခြင်း node_modules တည်မြဲမှုကို မဖယ်ရှားပါဘူး။
ပေါ်ပေါက်လာသောပုံစံများ
ဒီကမ်ပိန်းက ඉදිරියටත්တဲ့ ခေတ်ရေစီးကြောင်းနှစ်ခု။
Python-payload ပို့ဆောင်မှုထုပ်ပိုးမှုတစ်ခုအနေဖြင့် npm။ npm tarball သည် 4-line installer တစ်ခုဖြစ်သည်။ တကယ့် stealer မှာ Python ဖြစ်ပြီး system-wide တွင် install လုပ်ထားသည်။ PIP bundled directory မှ။ ဒါက အသစ်အဆန်းတော့ မဟုတ်ပါဘူး — npm package တွေက Python ကို အရင်က drop လုပ်ထားတာ တွေ့ဖူးပါတယ် — ဒါပေမယ့် crypto-clipper campaign တွေမှာ ပိုပြီး အသုံးများတဲ့ ပုံစံတစ်ခု ဖြစ်လာနေပါတယ်။ operator ရဲ့ အားသာချက်က နှစ်ခုရှိပါတယ်- Python clipboard libraries (ပိုင်ပါကလစ် ၎င်းတို့အနက် ပထမဆုံး) သည် JavaScript နှင့် ညီမျှသော ဆော့ဖ်ဝဲများထက် ပိုမိုသန့်ရှင်းပြီး cross-platform တွင် ပိုမိုအသုံးပြုနိုင်သည်။ အလိုအလျောက် npm စကင်နာအများစုသည် JavaScript ဖိုင်များကို လေးလံစေပြီး Python သည် အလေးချိန်ပိုများသည်။ .py ပေါ့ပါးစွာ ထုပ်ပိုးသည်။ ကုန်ကျစရိတ်ကတော့ တပ်ဆင်မှုခြေရာက အများကြီးပိုကျယ်လောင်ပါတယ် — အသစ်တစ်ခုပါ pip ကို install လုပ်ပါ။ ပုံမှန်အားဖြင့် မလုပ်ဆောင်သော developer စက်တွင် ဝှက်ရန်ခက်ခဲသည် pip ကို install လုပ်ပါ။ နေစဉ်အတွင်း npm install.
ပလက်ဖောင်း-ဇာတိအမည်များအဖြစ် ခိုးဝှက်ခြင်းသာဖြစ်သည်။ မကြာသေးမီက clipper များနှင့် small-payload stealer အများအပြားသည် code-level obfuscation ကို လုံးဝစွန့်လွှတ်ပြီး တရားဝင်ပုံပေါက်သော persistence label များကို အသုံးပြုလာကြသည်။ python3-dbus-helper, com.apple.python.runtimeနှင့် PyRuntimeBroker စာအုပ်ထဲက ဥပမာတွေပါပဲ — ခုခံကာကွယ်သူတစ်ယောက်ရဲ့ မျက်လုံးက ကျော်သွားမယ့် နာမည်တွေပါ။ ဒါက ဈေးသက်သာပြီး တာရှည်ခံတဲ့ ခိုးဝှက်မှုပုံစံပါ- takedown က package တစ်ခုချင်းစီအတွက်ပါ၊ ဒါပေမယ့် persistence files တွေက takedown မှာ အသက်ရှင်ကျန်ရစ်ပြီး တကယ့် platform component တစ်ခုရဲ့ နာမည်ကို အစွဲပြုပြီး အမည်ပေးထားတဲ့ service တစ်ခုကတော့ ရှင်းလင်းတဲ့ audit မှသာ ရှင်းလင်းနိုင်မှာပါ။
ကာကွယ်သူတွေ ဘာလုပ်သင့်လဲ
- ~/.config/systemd/user/, ~/Library/LaunchAgents/, နှင့် Get-ScheduledTask တို့ကို စစ်ဆေးပါ output ကို IOC တွင်ဖော်ပြထားသော entry များအတွက် developer စက်များပေါ်တွင်။ npm package ကိုဖယ်ရှားခြင်းဖြင့် ၎င်းတို့ကို နေရာတွင်ထားရှိမည်ဖြစ်ပြီး ၎င်းတို့ကို လက်ဖြင့်ဖယ်ရှားရန် လိုအပ်ပါသည်။
- စာရင်းပြုစုထားသော ပိုက်ဆံအိတ်လိပ်စာများသို့ ငွေလွှဲပြောင်းမှုများကို ပိတ်ဆို့ခြင်း လိပ်စာခွင့်ပြုစာရင်းရရှိနိုင်သည့် corporate-treasury နှင့် DeFi-wallet နယ်နိမိတ်များတွင်။
- ~/.config/clipboard-guardian/config.json ကို ရှာဖွေပါ။ (နှင့် ပလက်ဖောင်းနှင့် ညီမျှသည်များ) ဆော့ဖ်ဝဲရေးသားသူ-စက်အုပ်စုတစ်လျှောက်တွင်။ မည်သည့်ပက်ကေ့ဂျ်ဗားရှင်းက ပေးပို့သည်ဖြစ်စေ ဖိုင်ရှိနေခြင်းသည် ယုံကြည်မှုမြင့်မားသော ကူးစက်မှုတစ်ခုဖြစ်သည်။
- clipboard_guardian/guardian.py အတွက် node_modules/ ကိုရှာပါ။ ဖယ်ရှားခြင်းမပြုမီက ရှိနိုင်သည့် build-cache snapshots များတွင်။ ဖိုင်၏ md5 သည် သုံးသပ်ထားသော ဗားရှင်းအားလုံးတွင် တည်ငြိမ်ပါသည်။
- Lockfile-pin @juggle/resize-observer (တရားဝင်ပက်ကေ့ဂျ်) ထို့ကြောင့် အနာဂတ်ထည့်သွင်းမှုများသည် အထူးသဖြင့် lockfile-less workflows ကဲ့သို့သော စာလုံးတစ်လုံးအမှားအယွင်းအောက်တွင် အခြားမည်သည့်အရာကိုမျှ ဖြေရှင်းနိုင်မည်မဟုတ်ပါ။ npx.
- pip install ကိုခေါ်တဲ့ npm postinstall တိုင်းကို ကိုင်တွယ်ပါ။ ပြင်းထန်မှုမြင့်မားသကဲ့သို့ တည်ဆောက်မှုတွင်pipeline မူဝါဒ။ npm package တစ်ခုသည် install အချိန်တွင် pip လိုအပ်ရန် တရားဝင်အကြောင်းပြချက်မရှိပါ — Python tooling သည် Python tooling ကို ဖြန့်ဝေသည်။
- pyperclip ကို တင်သွင်းသည့် python3-dbus-helper အမည်ရှိ လုပ်ငန်းစဉ်များအတွက် process_iter()-နှိုင်းယှဉ်နိုင်သော စောင့်ကြည့်ရေးဒေတာကို ရှာဖွေပါ — အသွင်ယူမှု မကိုက်ညီမှု (ကလစ်ဘုတ်စာကြည့်တိုက်ကို ကိုင်ဆောင်ထားသော D-Bus အကူအညီပေးသူ) သည် ကျွန်ုပ်တို့တွင်ရှိသော အသန့်ရှင်းဆုံး အပြုအမူဆိုင်ရာ အညွှန်းကိန်းဖြစ်သည်။
- ကူးစက်ခံရသည့် စက်များမှ ကူးထည့်ထားသော ပိုက်ဆံအိတ်လိပ်စာများကို လှည့်ပါ။ clipboard hijacker သည် wallet UI နှင့် paste target ကြားရှိ လမ်းကြောင်းကို ထိခိုက်စေပါသည်။ ကူးစက်ခံရစဉ် ကူးယူထားသော လိပ်စာများကို တိတ်တဆိတ်ပြောင်းလဲနိုင်ပါသည်။ ကူးစက်ခံရသည့်အချိန်အတွင်း ပေးပို့သော မည်သည့်အရာကိုမဆို မှားယွင်းစွာ ဦးတည်မိနိုင်သည်ဟု ယူဆသင့်သည်။
အဓိကအချက်ကတော့ persistence က remove လုပ်တာကို ခံနိုင်ရည်ရှိတာပါပဲ။ registry က နောက်ဆုံးမှာ @jaggle/resizeobserves ဗားရှင်းကိုးခုလုံးတွင်၊ systemd unit၊ LaunchAgent နှင့် Scheduled Task တို့သည် ၎င်းတို့ကိုယ်တိုင် ဖယ်ရှားမည်မဟုတ်ပါ။
ကိုးကား
- npm မှာ @juggle/resize-observer — ဤ typosquat မှ အယောင်ဆောင်ထားသော တရားဝင်ပက်ကေ့ဂျ်၊ byte-for-byte README ကူးယူမှုအတွက် အခြေခံအဖြစ် အသုံးဝင်သည်။
- @jaggle/resizeobserves မှတ်ပုံတင် မက်တာဒေတာ — ရာဇဝတ်မှုဆိုင်ရာ အချိန်ဇယားဆွဲခြင်းအတွက် အသုံးဝင်သော အန္တရာယ်ရှိသော ဗားရှင်းကိုးခုအတွက် အချိန်တံဆိပ်များကို ထုတ်ဝေပါ။





