TL; DR
Għoxrin pakkett npm ippubblikati fuq jumejn fl-aħħar ta' Lulju u l-bidu ta' Awwissu 2026 jippreżentaw lilhom infushom bħala libreriji interni tal-komponenti tal-UI u utilitajiet backend kondiviżi. L-ebda wieħed minnhom ma jimplimenta l-funzjonalità li jirreklama. Kull wieħed minnhom iġorr miegħu klassi stub, README li jiddeskrivi l-pakkett bħala intern, u fajl imsejjaħ _polyfill.js.
Il-parti interessanti hija minn fejn jiġi invokat dak il-fajl. Mhuwiex ganċ ta' installazzjoni — il-manifesti ma jiddikjaraw l-ebda preinstall, install, jew postinstall. Minflok, l-aħħar linja ta' index.js Jgħid: try { require("./_polyfill"); } catch (_) {}Il-payload jaħdem l-ewwel darba li l-kodiċi tal-applikazzjoni jimporta l-pakkett. Installazzjoni b' --ignore-scripts, Il- standard pariri għat-tnaqqis tal-esponiment tal-katina tal-provvista fil-ħin tal-installazzjoni, ma jipprevjenihx.
Xiex _polyfill.js Dak li jagħmel hu li jirkupra eżekutibbli speċifiku għall-pjattaforma minn wieħed minn tliet hosts tal-Cloudflare Workers, jiktbu f'direttorju temporanju taħt isem każwali, jimmarkah bħala eżekutibbli, u jniedih separat mill-proċess prinċipali. Dak l-eżekutibbli nnifsu huwa loader: jelenka l-prodotti tas-sigurtà tal-endpoint skont l-isem tal-proċess, jiċċekkja l-username attwali ma' kontijiet tal-ambjent tal-analiżi magħrufa, jaġġorna l-interfejsijiet tat-telemetrija AMSI u ETW fil-memorja, jinstalla l-persistenza taħt l-isem ta' komponent awdjo tal-Windows, u jirkupra t-tielet binarju ta' diversi megabytes fid-daqs. It-tielet stadju jasal kriptat u huwa deċifrat u eżegwit fil-memorja minflok miktub fuq id-diska.
Fl-1 ta' Awwissu, madwar erba' sigħat wara li l-pakketti ġew ikkonfermati malizzjużi permezz ta' reviżjoni manwali, dsatax mill-għoxrin isem tneħħew minn npm mill-pubblikatur tagħhom stess f'sekwenza ta' ħamsa u għoxrin sekonda. Fit-2 ta' Awwissu wieħed minn dawk l-ismijiet ġie rreġistrat mill-ġdid — minn kont differenti, li jġorr l-istess kodiċi. L-infrastruttura tal-kunsinna kienet qed isservi t-tliet stadji kollha meta nkiteb dan.
| Pakketti | 20 isem npm, ~74 verżjoni ppubblikata |
| Temi tal-ismijiet | beaver-ui-* (13), accounts-* (3), flimkien ma' afisha-storybook-default, bcore-bravo-eslint-config, arbocrate-sla-prober-arbocrate-sla-prober-core, a.poltoradnev-package-c |
| grillu | Importazzjoni tal-modulu (require), mhux skript taċ-ċiklu tal-ħajja tal-npm |
| 1 Internship | _polyfill.js — irkupru u tnedija |
| 2 Internship | Loader konness statikament, ippakkjat bl-UPX fuq Linux; enumerazzjoni tas-sigurtà tal-endpoint, patching tal-AMSI/ETW, persistenza |
| 3 Internship | beacon_linux.bin / beacon_mac.bin / update_win.exe, 4–13 MB; ikkunsinnat kriptat, eżegwit fil-memorja |
| Pjattaformi | Linux x64 u arm64, macOS universali, Windows x64 |
| Pubblikaturi | Żewġ kontijiet, bażi ta' kodiċi waħda |
| Status | 19 minn 20 isem mhux ippubblikat mill-operatur; 1 ippubblikat mill-ġdid u live; infrastruttura tal-kunsinna live |
Anatomija tal-attakk
Stadju 1 — il-pakkett
Kull membru jibgħat l-istess forma bi tliet fajls. index.js tesporta klassi b' go fiha() li jistabbilixxi boolean, a verżjoni (), U ikkonfigura() li jgħaqqad oġġett ta' għażliet. Xejn aktar. README.md jagħti linja ta' installazzjoni, a jeħtieġu linja, u s-sentenza “Pakkett intern. Ara CONTRIBUTING.md għal-linji gwida” — KONTRIBUTING.md mhux fit-tarball.
_polyfill.js huwa ftit inqas minn 5 KB u jinqara bħala kodiċi ordinarju tal-infrastruttura. Jiftaħ bi tliet kontrolli ambjentali:
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return;Dawk il-varjabbli huma kontrolli konvenzjonali tal-privatezza. Hawnhekk jikkontrollaw jekk binarju jitniżżelx u jiġix eżegwit. Magna li tissettja DO_NOT_TRACK jinqabeż għalkollox.
Imbagħad jiġi timbru li jitħaddem darba: fajl f' /tmp/.analytics_state, Jew stat_analitiku taħt % TEMP% fuq Windows, li l-ħin tal-modifika tiegħu jitqabbel ma' tieqa ta' 20,357 sekonda. F'dik it-tieqa l-modulu jirritorna immedjatament, għalhekk importazzjonijiet ripetuti waqt bini jipproduċu tentattiv wieħed ta' rkupru minflok għexieren.
Il-hosts tad-destinazzjoni mhumiex preżenti bħala litterali. Dawn huma mmuntati waqt l-eżekuzzjoni minn frammenti:
["oob-worker.cf102-","baf.workers.d","ev"].join("")
Tliet hosts huma mibnija b'dan il-mod u mħallta qabel l-użu, għalhekk l-ordni tvarja skont l-eżekuzzjoni. L-irkupru huwa HTTPS GET imqabbad ma' IPv4 b' Aġent tal-Utent of node-fetch/2.6 — valur plawżibbli li proċess tan-Nodu għandu joħroġ. Rispons taħt l-1,000 byte jiġi skartat u jiġi ppruvat il-host li jmiss.
Jekk it-tlieta li huma jfallu, il-modulu jerġa' lura għad-DNS. Joħroġ query TXT għal ċ. biex tikseb għadd ta' biċċiet, imbagħad titlob 0. permezz n. fi gruppi ta' għaxra, jikkonkatena t-tweġibiet, u jiddekodifika r-riżultat b'base64. Din il-mogħdija ġġorr l-istess eżekutibbli fuq ir-rekords TXT tad-DNS, li tibqa' teżisti f'ambjenti fejn l-HTTP ħiereġ jiġi ffiltrat iżda r-riżoluzzjoni tad-DNS ma tiġix.
Il-bytes irkuprati jinkitbu fuq /var/tmp/.cache_<8-hex> fuq Unix, jew %TEMP%\dotnet_diag_<8-hex>.exe fuq Windows — isem ta' fajl li jinqara bħala artifatt dijanjostiku ta' .NET. Fuq Unix il-fajl jingħata l-modalità 0755. It-tnedija hija ibidu ma maqtugħ: veru, stdio: “injora”, u mhux referenza(), għalhekk it-tifel jgħix aktar mill-proċess tan-Node li bedah; fuq Windows l-invokazzjoni żżid twieqiAħbi: veru.
Żewġ dettalji jikkompletaw l-istampa. Għajnuna definita bħala const _l = (…a) => proċess.stderr.ikteb(“”) jissejjaħ f'kull pass tal-irkupru — jikteb string vojta u jarmi l-argumenti tiegħu, u jokkupa l-pożizzjoni fejn ikun hemm il-logging. U kull pakkett jibgħat fajl ta' 81 KB f' lib/telemetrija.js li l-kumment tal-intestatura tiegħu jiddeskrivi “Analytics SDK” b’“Trasport HTTPS b’rotazzjoni tal-endpoint u tentattiv mill-ġdid” u “Skoperta ta’ servizz ibbażata fuq id-DNS għal failover”. Fil-bini attwali xejn ma jeħtieġha.
Stadju 2 — il-loader
Il-binarju tal-Linux x64 huwa ELF marbut statikament ikkompressat b'UPX 3.96. Il-bini tal-macOS huwa binarju universali li jkopri x86_64 u arm64; il-bini tal-Windows huwa eżekutibbli tal-console PE32+ imqaxxar. L-erbgħa kollha ġew irkuprati u eżaminati statikament; l-ebda wieħed ma ġie eżegwit.
L-importazzjonijiet u t-tabella tal-istrings tal-bini tal-Windows jiddeskrivu l-imġiba tiegħu b'mod ċar. Dan jirriżolvi HuwaDebuggerPreżenti, Iċċekkja d-DebuggerRemotPreżenti, u Proċess ta' Informazzjoni NtQuery, u jaqra SISTEMA\CurrentControlSet\Servizzi\Diska\Enum — mogħdija tar-reġistru li l-valuri tagħha jidentifikaw kontrolluri tad-diski virtwali. Din issejjaħ IksebDiskFreeSpaceExW u, GlobalMemoryStatusEx, konsistenti mal-iċċekkjar ta' jekk ir-riżorsi tal-host jaqblux ma' istanza ta' analiżi ta' ħajja qasira.
Iġorr lista ta' usernames: CurrentUser, Amministratur tal-IT, Ħong Lee, KAXXA TAT-TEST, ħapubws, milozs, Ġanni, admin, malware, kampjun, virus, ambjentDiversi minn dawn huma artefatti ta' ambjenti ta' analiżi dokumentati pubblikament.
Iġorr ukoll lista ta' prodotti tas-sigurtà tal-endpoints u l-ismijiet tal-proċessi tagħhom, enumerati permezz ta' CreateToolhelp32Snapshot u, Proċess32L-EwwelW/Proċess32NextW:
- CrowdStrike Falcon (
csfalconservice,CSFalconContainer) - Karbonju Iswed (
cb.exe) - Cylance (
cylancesvc.exe) - Bitdefender (
bdagent.exe) - Kaspersky (
avp.exe,kavfs.exe) - Trend Micro u Deep Security (
coreServiceShell,ds_agent.exe) - FireEye/Trellix (
xagt.exe) - Tanju (
taniumclient.exe) - Hitmanpro (
hmpalert.exe) - Elastic (
elastic-agent.exe,elastic-endpoint,filebeat.exe,winlogbeat.exe) - Wazuh u OSSEC (
wazuh-agent.exe,ossec-agent.exe) - Iċċekkja Punt
- Windows Defender
Hemm żewġ simboli oħra preżenti: AmsiScanBuffer, il-punt tad-dħul li Windows jesponi għall-iskennjar tal-kontenut fil-memorja, u EtwAvvenimentIkteb, il-funzjoni li permezz tagħha Event Tracing għal Windows jirreġistra l-avvenimenti. It-tnejn huma miri komuni għal modifika fil-proċess li trażżan it-telemetrija li dawk l-interfejsijiet kieku jipproduċu.
Il-persistenza tidher darbtejn fuq il-Windows. Il-binarju jiġi kkupjat lejn %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe, u żewġ mekkaniżmi jirreferu għalih: valur taħt SOFTWARE\Microsoft\Windows\Verżjoni Attwali\Eżegwixxi, u kompitu skedat irreġistrat bħala
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHESTIl-mogħdija tal-kompitu, l-isem tal-kompitu, u l-isem eżekutibbli kollha jirriflettu komponent awdjo ġenwin tal-Windows. /RL L-OGĦLA jitlob l-ogħla livell ta' privileġġ disponibbli.
Il-bini tal-macOS isegwi l-istess mudell b'ismijiet xierqa għall-pjattaforma: jikteb lista ta' proprjetajiet biex ~/Librerija/LaunchAgents/com.apple.windowserver.helper.plist u jqiegħed l-eżekutibbli tiegħu f' ~/.local/share/runtime/com.apple.runtimeJiċċekkja għal /Applikazzjonijiet/VMware Fusion.app u, /Librerija/Appoġġ għall-Applikazzjonijiet/Għodod tal-VMware.
Il-kapaċità tan-netwerk tkopri tliet trasporti: WININET.dll għal HTTPS b'a https://%s:%d%s sekwenza tal-format, WS2_32.dll sokits, u DNSAPI.dll ma DnsQuery_A flimkien ma ' ċ.%s.%s format string — l-istess forma ta' query ta' chunk-count li tuża l-ewwel stadju.
Id-deskrizzjoni ta' hawn fuq hija dak li juru l-importazzjonijiet, l-istrings, u l-mogħdijiet tar-reġistru tal-binarju waqt spezzjoni. Analiżi pubblika b'ħafna magni tal-istess kampjun tal-Windows iżżid dettall li qari statiku ta' tabella ta' importazzjoni ma jistax jistabbilixxi waħdu, u huwa attribwit hawn aktar milli ddikjarat mill-ġdid bħala osservazzjoni diretta. Dik l-analiżi tirrapporta li r-referenzi tal-AMSI u l-ETW mhumiex sempliċement solvuti iżda wkoll imwaħħlin — AmsiScanBuffer in amsi.dll u, EtwAvvenimentIkteb in ntdll.dll — li jrażżan l-iskennjar tal-kontenut fil-memorja u t-traċċar tal-avvenimenti għall-proċess. Jirrapporta l-verifiki kontra l-analiżi bħala bbażati fuq il-ħin flimkien ma' Iċċekkja d-DebuggerRemotPreżenti, u jidentifika l- IksebKuntest tal-Ħajta sejħa bħala kontroll tal-hardware-breakpoint li jaqra r-reġistri tad-debug. Tirrapporta wkoll mutex ta' istanza waħda, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}, u ismijiet Servizz tal-Ħsejjes tas-Sistema bħala l-valur Run-key. Dak il-valur tal-mutex ma kienx fost l-istrings irkuprati hawn — il-filtru tal-estrazzjoni użat eskluda tokens eżagonali b'ittri kbar u b'parentesi — u huwa rreġistrat fit-tabella tal-indikaturi fuq is-saħħa ta' dik l-analiżi pubblika aktar milli fuq osservazzjoni diretta.
3 Internship
Il-loader jirreferi għal sett ieħor ta' mogħdijiet fuq l-istess hosts. Kollha kienu aċċessibbli waqt l-analiżi: beacon_linux.bin fi 5.3 MB, beacon_mac.bin fi 13.3 MB, aġġornament_win.exe f'10.3 MB, u driegħ.bin f'4.3 MB. Dawn ma ġewx irkuprati, u l-imġiba tagħhom mhix magħrufa.
Għall-mogħdija tal-Windows, l-analiżi pubblika tal-loader tiddeskrivi kif tiġi mmaniġġjata dik it-tielet stadju: tinġieb permezz ta' WinINet, tasal kriptata, u tiġi dekriptata fil-memorja u eżegwita b'mod riflessiv — memorja allokata, importazzjonijiet riżolti, rilokazzjonijiet ipproċessati, u kontroll mgħoddi lil thread ġdid permezz ta' OħloqĦajtGħal dik ir-raġuni t-tielet stadju qatt ma jinkiteb fis-sistema tal-fajls, għalhekk l-iskoperta bbażata fuq il-fajls u l-forensika tad-diski wara inċident m'għandhom xejn x'jirkupraw minnha. Dan ifisser ukoll li l-irkupru tal-bytes mill-host tal-kunsinna jagħti ciphertext, mhux eżekutibbli analizzabbli.
Kronoloġija
It-timestamps kollha huma UTC u ġejjin mill-metadata tar-reġistru npm, li tirreġistra l-ħolqien u t-tneħħija tal-pubblikazzjoni tal-pakketti indipendentement minn kwalunkwe osservatur.
| Meta | Xiex |
|---|---|
| 2026-07-31 09:25:05 → 09:29:56 | Għaxar ismijiet maħluqa, kull wieħed jibda mill-verżjoni 0.0.1, madwar tlettax-il sekonda 'l bogħod minn xulxin. |
| 2026-08-01 09:38 → 11:29 | L-ismijiet eżistenti jiżdiedu permezz ta' numri ta' verżjonijiet minfuħin, 6.1.9 permezz 6.1.12, 9.9.9 permezz 9.9.12, 8.9.3 permezz 8.9.6, 5.4.6 permezz 5.4.9. |
| 2026-08-01 13:04:14 → 13:04:18 | Disgħa oħra beaver-ui-* ismijiet maħluqa f'daqqa ta' erba' sekondi, kull wieħed ippubblikat direttament f'verżjoni 12.x mingħajr storja preċedenti. |
| 2026-08-01 ~13:00–14:30 | Verżjonijiet ikklassifikati bħala malizzjużi wara reviżjoni manwali. |
| 2026-08-01 17:39:49 → 17:40:14 | Dsatax-il isem mill-għoxrin isem ma ġewx ippubblikati f'ħamsa u għoxrin sekonda, sekwenzjalment, b'madwar 1.2 sekondi 'l bogħod minn xulxin. |
| 2026-08-02 18:58:41 | a.poltoradnev-package-c maħluq mill-ġdid taħt kont ta' manutentur differenti, verżjoni 0.0.2. |
| 2026-08-02 19:20:28 | verżjoni 33.9.5 ippubblikat bl-istess isem. |
| 2026-08-02 20:14 | It-tliet hosts tal-kunsinna kollha jservu l-istadji tnejn u tlieta; id-DNS fallback iwieġeb bl-għadd ta' chunks. |
Tnejn minn dawn l-entrati ta’ min joqgħod attent għalihom.
Il-burst tat-13:04 poġġiet disa' pakketti fir-reġistru f'erba' sekondi, kull wieħed b'verżjoni waħda fit-tnax u l-ebda 0.0.1 taħtha. In-numri tal-verżjonijiet fuq din l-iskala, fuq ismijiet li għandhom ġurnata, mhumiex qed jiddeskrivu storja ta' rilaxx.
Is-sekwenza ta' tneħħija tal-pubblikazzjoni hija daqstant mekkanika: dsatax-il isem, ħamsa u għoxrin sekonda, spazjar uniformi. npm jirreġistra dawn bħala avvenimenti ordinarji ta' tneħħija tal-pubblikazzjoni aktar milli l-placeholder li tħalli warajha tneħħija mibdija mir-reġistru, li tqiegħed l-azzjoni mal-kont tal-pubblikazzjoni aktar milli mar-reġistru.
Indikaturi ta' kompromess
Il-hosts u l-mogħdijiet huma mneħħija mill-fang. M'għandekx issolvihom jew tirkuprahom minn sistema ta' produzzjoni.
| tip | valur |
|---|---|
| Ospitanti tal-kunsinna | oob-worker[.]cf99-9b3[.]workers[.]dev |
| Ospitanti tal-kunsinna | oob-worker[.]cf102-baf[.]workers[.]dev |
| Ospitanti tal-kunsinna | oob-worker[.]cf103-070[.]workers[.]dev |
| Trasport tad-DNS | tin[.]dl[.]well1[.]site (Linux x64), tina[.] (driegħ64), ldr[.] (macOS), win[.] (Windows) — għadd ta' biċċiet f' c.<domain>, dejta fuq <n>.<domain> |
| Mogħdijiet tal-Istadju 2 | /pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe |
| Mogħdijiet tal-Istadju 3 | /pkg/beacon_linux.bin, /pkg/beacon_mac.bin, /pkg/update_win.exe, /pkg/arm.bin |
| Mogħdija tal-waqgħa (Unix) | /var/tmp/.cache_<8-hex> |
| Mogħdija tal-waqgħa (Windows) | %TEMP%\dotnet_diag_<8-hex>.exe |
| Persistenza (Windows) | %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe; kompitu \Microsoft\Windows\Multimedia\SystemSoundsServiceValur taċ-ċavetta tat-tħaddim SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SystemSoundsService |
| Mutex (Windows) | Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9} |
| Persistenza (macOS) | ~/Library/LaunchAgents/com.apple.windowserver.helper.plist; binarju f' ~/.local/share/runtime/com.apple.runtime |
| Timbru li jaħdem darba | /tmp/.analytics_state, %TEMP%\analytics_state (tieqa ta' 20,357 sekonda) |
| Talba għall-firma | HTTPS GET, IPv4-pinned, User-Agent: node-fetch/2.6 |
| Fajl tal-Istadju 1 | _polyfill.js, SHA-256 392dc9ec85042ce1796bfa9b8c7bf6e05c7710579aab8b7b1eb73788683883af |
| Fajl mhux referenzjat | lib/telemetry.js, SHA-256 2266c9b8e199daebe31a9afcb61d9b0d76706b63c92312fc8223d22de42e63c7 |
| Stadju 2 (Linux x64) | SHA-256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| Stadju 2 (Linux arm64) | SHA-256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| Stadju 2 (macOS) | SHA-256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| Stadju 2 (Twieqi) | SHA-256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
Ismijiet tal-pakketti
Attribuzzjoni u mġiba osservata
Hemm involuti żewġ kontijiet npm. Id-dsatax-il isem mhux ippubblikat ġew ippubblikati minn kont wieħed; a.poltoradnev-pakkett-c ġie rreġistrat mill-ġdid fit-2 ta' Awwissu taħt isem ta' kont differenti u dominju tal-email differenti. Il-kodiċi huwa l-istess nisel fiż-żewġ każijiet, u t-tieni reġistrazzjoni ġġorr l-istess hosts tal-kunsinna, l-istess dominji DNS fallback, l-istess kostruzzjoni drop-path, u l-istess timbru run-once.
Il-par ippubblikat mill-ġdid juri wkoll kif ġie mmuntat. Verżjonijiet 0.0.2 u, 33.9.5 huma identiċi għall-byte apparti mill-istring tal-verżjoni f' package.json, U l- index.js mibgħuta bħala 0.0.2 iddikjarat VERŻJONI kostanti = “33.9.5”Iż-żewġ artefatti nqatgħu minn siġra sors waħda u ġew innumerati wara. M'hemm l-ebda 0.0.2 storja tal-iżvilupp għall- 0.0.2 rilaxx biex jirrappreżenta.
In-numerazzjoni tal-verżjonijiet fis-sett kollu ssegwi l-istess loġika. L-ismijiet tal-pakketti f'din il-kampanja jinqraw bħala affarijiet li jeżistu ġewwa organizzazzjoni aktar milli fuq reġistru pubbliku: sett ta' komponenti tal-UI, konfigurazzjoni ESLint, prober tal-SLA, pakkett imsemmi għal persuna. Meta build jirriżolvi dipendenza bl-isem u jikkonsulta reġistru pubbliku flimkien ma' wieħed privat, l-ogħla numru tal-verżjoni huwa dak li jirbaħ. Isem maħluq f' 0.0.1 nhar it-Tnejn u jġorr 12.9.6 nhar it-Tlieta hija pożizzjonata għal dak it-tqabbil.
Iż-żewġ mewġ ta’ pubblikazzjoni huma wkoll differenti b’mod li jissuġġerixxi iterazzjoni. Il-kodiċi preċedenti semma l-fajl tal-payload tiegħu setup.js u elenka ħames hosts tal-kunsinna; il-fajl attwali jismu _polyfill.js u jelenka tlieta. Il-verżjoni preċedenti neħħiet il-fajl li tneħħa ħames sekondi wara t-tnedija, u ħalliet il-proċess jaħdem minn inode mħassar; il-verżjoni attwali ma tagħmilx dan. Il-fajl mhux referenzjat lib/telemetrija.js jibqa' fit-tarball fit-tnejn, għadu mibgħut, mhux aktar imwaħħal mal-wajers.
Osservazzjoni waħda dwar il-kill switches ta’ min isemmiha qabelcisely, għax imur kontra qari komuni. DISABLE_TELEMETRY, GĦAŻLA_TA'_L-ANALITIKA, u DO_NOT_TRACK jiġu onorati, u jiġu ċċekkjati qabel ma jiġri xi ħaġa oħra. Riċerkatur li l-ambjent tal-analiżi tiegħu jistabbilixxi kwalunkwe wieħed minnhom josserva pakkett li ma jagħmel xejn.
L-impatt u x'jistgħu jagħmlu d-difensuri
Il-konsegwenza prattika tat-trigger tal-importazzjoni fil-ħin hija dejqa u ta' min jissemma waħedha. npm install –ignore-scripts jipprevjeni l-iskripts taċ-ċiklu tal-ħajja milli jaħdmu, u huwa parir tajjeb. M'għandu l-ebda effett hawnhekk, għaliex dan il-kodiċi ma jużax skript taċ-ċiklu tal-ħajja. Il-payload jaħdem meta l-kodiċi tal-applikazzjoni, test run, bundler, jew linter l-ewwel jimporta l-modulu. Fuq runner tas-CI li jinstalla u mbagħad jibni immedjatament, it-tnejn huma sekondi 'l bogħod minn xulxin.
Għall-kaċċa, is-sinjali li jdumu huma strutturali aktar milli litterali. Il-hosts, l-isem tal-fajl, u l-mogħdijiet tad-drop se jinbidlu; dawn il-forom huma aktar diffiċli biex jiġu varjati:
- Punt tad-dħul ta' modulu li d-dikjarazzjoni finali tiegħu hija ipprova { teħtieġ("./x"); } qabda (_) {} madwar fajl li mhux parti mill-API esportata. Pakkett b'polyfill ġenwin jimportah fil-parti ta' fuq u juża r-riżultat tiegħu. Li taċċetta kull żball minn importazzjoni fil-qiegħ tal-fajl mhuwiex immaniġġjar ta' żbalji.
- Kordi ospitanti mmuntati minn .ingħaqad ("") minn firxa ta' frammenti. Kodiċi leġittimu m'għandu l-ebda raġuni biex jaqsam isem ta' host bejn elementi ta' array.
- Pakkett li d-dipendenzi ddikjarati tiegħu huma vojta iżda li jilħaq għal https, Dns, u child_process fil-ħin tal-importazzjoni. L-irkupru flimkien mal-eżekuzzjoni f'pakkett li jirreklama komponent tal-UI hija s-sejba kollha.
- Numri tal-verżjonijiet inkonsistenti mal-età ta' pakkett. Isem li ġie ppubblikat għall-ewwel darba jiem ilu f'verżjoni ewlenija b'żewġ ċifri, mingħajr ebda rilaxxi intermedji, qed jiddeskrivi xi ħaġa oħra għajr l-iżvilupp tiegħu.
- Jikteb lil / var / tmp or % TEMP% segwit minn chmod sa 0755 u spawn separat. Is-sekwenza hija qasira, ordnata, u rarament beninna flimkien.
Fuq il-hosts tal-Windows hemm żewġ kontrolli rħas u ta' fiduċja għolja. L-artefatti tal-persistenza huma kordi fissi u l-ebda waħda minnhom ma tappartjeni għal sistema nadifa: kompitu skedat f' \Microsoft\Windows\Multimedia\Servizz tal-Ħsejjes tas-Sistemi, valur taċ-ċavetta tar-Run bl-isem Servizz tal-Ħsejjes tas-Sistema, u eżekutibbli b'dak l-isem taħt %APPDATA%\Microsoft\Windows\Temi\Is-servizz awdjo ġenwin tal-Windows ma jinsab f'ebda wieħed minn dawk il-postijiet. It-tieni, il-loader juża mutex fiss ta' istanza waħda, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}; il-preżenza tiegħu fuq host hija indikatur, u minħabba li l-loader jittratta mutex eżistenti bħala "diġà qed jaħdem", il-ħolqien minn qabel tiegħu huwa inokulazzjoni vijabbli għal żmien qasir waqt li tkun skedata r-rimedjazzjoni.
L-iskoperta fit-tielet stadju hija problema aktar diffiċli u ta' min jiċċaraha. Skont l-analiżi pubblika, din tiġi deċifrata u mmappjata fil-memorja minflok ma tinkiteb fuq id-diska, għalhekk l-iskannjar tal-fajls u l-forensika tad-diska mhux se jarawha. Dak li jibqa' osservabbli huwa l-marka tal-loader stess — id-dħul tal-persistenza, il-mutex, u t-talbiet ħerġin lill-hosts tal-kunsinna jew lid-dominji DNS-TXT.
Għal ambjenti li jirriżolvu dipendenzi kemm minn reġistru privat kif ukoll minn wieħed pubbliku, il-mitigazzjoni ma tinbidilx minn xejn hawn: ismijiet interni tal-ambitu sabiex isem pubbliku ma jkunx jista' jissodisfahom, u r-riżoluzzjoni tiġi mqabbda mar-reġistru intern għal dawk l-ambiti. L-imġiba tal-inflazzjoni tal-verżjoni deskritta hawn fuq taħdem biss fejn verżjoni pubblika ogħla tista' tirbaħ isem.
Fl-aħħar nett, it-tneħħija tal-pubblikazzjoni ta’ min jaqraha bir-reqqa aktar milli bħala tmiem. Dsatax-il isem ħallew ir-reġistru f’ħamsa u għoxrin sekonda u wieħed irritorna ġurnata wara taħt kont ġdid, bl-infrastruttura tal-kunsinna ma ntmessx matul il-proċess kollu. It-tneħħija tal-pakketti mhijiex it-tneħħija tal-operazzjoni; il-hosts komplew iservu kull stadju waqt li dan kien qed jinkiteb. Kwalunkwe siġra tad-dipendenza li rriżolviet wieħed minn dawn l-ismijiet bejn il-31 ta’ Lulju u l-1 ta’ Awwissu għandha titqies li kellha l-opportunità li tesegwixxi l-ewwel stadju, kemm jekk l-isem għadu jeżisti kif ukoll jekk le.
Referenzi
- Analiżi b'ħafna magni tal-loader tal-Windows — sors għall-patching tal-AMSI/ETW, l-eżekuzzjoni riflettiva fil-memorja, u d-dettall tal-mutex attribwit hawn fuq.
- dokumentazzjoni tal-iskripts npm — l-avvenimenti taċ-ċiklu tal-ħajja li din il-kampanja ma tużax.
- dokumentazzjoni tal-installazzjoni tal-npm — għata –jinjora-skripts u l-ambitu tiegħu.







