TL; DR
Dudek npm-pakaĵoj publikigitaj dum du tagoj fine de julio kaj komence de aŭgusto 2026 prezentas sin kiel internajn UI-komponentajn bibliotekojn kaj komunajn fonajn ilojn. Neniu el ili efektivigas la funkciojn, kiujn ili reklamas. Ĉiu liveras stub-klason, README-dosieron, kiu priskribas la pakaĵon kiel internan, kaj dosieron nomatan _polyfill.js.
La interesa parto estas de kie tiu dosiero estas alvokata. Ĝi ne estas instalaĵa hoko — la manifestoj tute ne deklaras antaŭinstalon, instalaĵon, aŭ postinstalon. Anstataŭe, la lasta linio de index.js legas: try { require("./_polyfill"); } catch (_) {}La utila ŝarĝo funkcias la unuan fojon kiam aplikaĵa kodo importas la pakaĵon. Instalante per --ignore-scripts, la standard konsiloj por redukti la provizoĉenan eksponiĝon dum instalado, ne malhelpas ĝin.
Kio _polyfill.js faras estas preni platform-specifan ruleblan dosieron de unu el tri Cloudflare Workers-gastigantoj, skribi ĝin al provizora dosierujo sub hazarda nomo, marki ĝin kiel ruleblan, kaj lanĉi ĝin malligite de la gepatra procezo. Tiu rulebla dosiero mem estas ŝargilo: ĝi listigas finpunktajn sekurecajn produktojn laŭ proceznomo, kontrolas la nunan uzantnomon kontraŭ konataj analiz-mediaj kontoj, flikas la AMSI kaj ETW telemetriajn interfacojn en memoro, instalas persistecon sub la nomo de Vindoza aŭdio-komponento, kaj preni trian duuman dosieron plurajn megabajtojn laŭ grandeco. La tria etapo alvenas ĉifrita kaj estas deĉifrita kaj efektivigita en memoro anstataŭ skribita al disko.
La 1-an de aŭgusto, proksimume kvar horojn post kiam la pakaĵoj estis konfirmitaj kiel malicaj per mana revizio, dek naŭ el la dudek nomoj estis forigitaj de npm fare de ilia propra eldonisto en dudek-kvin-sekunda sinsekvo. La 2-an de aŭgusto unu el tiuj nomoj estis registrita denove — de malsama konto, portante la saman kodon. La livera infrastrukturo servis ĉiujn tri etapojn kiam ĉi tio estis verkita.
| pakaĵoj | 20 npm-nomoj, ~74 publikigitaj versioj |
| Nomante temojn | beaver-ui-* (13), accounts-* (3), plus afisha-storybook-default, bcore-bravo-eslint-config, arbocrate-sla-prober-arbocrate-sla-prober-core, a.poltoradnev-package-c |
| ellasilon | Modula importo (require), ne npm-vivcikla skripto |
| stadio 1 | _polyfill.js — rehavigo kaj lanĉo |
| stadio 2 | Statike ligita ŝargilo, UPX-pakita en Linukso; finpunkta sekureca listigo, AMSI/ETW-flikado, persisto |
| stadio 3 | beacon_linux.bin / beacon_mac.bin / update_win.exe, 4–13 MB; liverita ĉifrita, efektivigita en memoro |
| platformoj | Linukso x64 kaj arm64, macOS universala, Vindozo x64 |
| Eldonejoj | Du kontoj, unu kodbazo |
| Statuso | 19 el 20 nomoj neeldonitaj de la funkciigisto; 1 reeldonita kaj aktiva; liverinfrastrukturo aktiva |
Atako-anatomio
Etapo 1 — la pakaĵo
Ĉiu membro liveras la saman tri-dosieran formon. indekso.js eksportas klason kun en ĝi() kiu metas bulean valoron, versio()Kaj agordi() kiu kunigas opciobjekton. Nenio alia. LEGUMIN.md donas installinion, postulas linio, kaj la frazo “Interna pakaĵo. Vidu CONTRIBUTING.md por gvidlinioj” — KONTRIBUTANTE.md ne estas en la tar-dosiero.
_polyfill.js estas iom malpli ol 5 KB kaj legiĝas kiel ordinara infrastrukturkodo. Ĝi malfermiĝas kun tri ĉirkaŭaĵkontroloj:
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return; Tiuj variabloj estas konvenciaj privatecaj kontroloj. Ĉi tie ili kontrolas ĉu duuma dosiero estas elŝutita kaj efektivigita. Maŝino kiu agordas NE_SPURI estas tute preterlasita.
Sekvas unufoja funkcistampo: dosiero ĉe /tmp/.analytics_stateaŭ analizo_stato sub % TEMP% en Vindozo, kies modiftempo estas komparata kun 20 357-sekunda fenestro. Ene de tiu fenestro la modulo revenas tuj, do ripetaj importoj dum konstruado produktas unu provon de retrovo anstataŭ dekojn.
La celaj gastigantoj ne ĉeestas kiel literaloj. Ili estas kunmetitaj dum rultempo el fragmentoj:
["oob-worker.cf102-","baf.workers.d","ev"].join("") Tri gastigantoj estas konstruitaj tiel kaj miksitaj antaŭ uzo, do la ordo varias laŭ ekzekuto. Akiro estas HTTPS GET alfiksita al IPv4 kun Uzanto-Agento of nodo-alporto/2.6 — kredinda valoro por Node-procezo elsendota. Respondo sub 1,000 bajtoj estas forĵetata kaj la sekva gastiganto estas provata.
Se ĉiuj tri malsukcesas, la modulo refalas al DNS. Ĝi sendas TXT-peton por ĉ. por akiri blokkalkulon, tiam petas 0. tra n. en aroj de dek, kunigas la respondojn, kaj base64-deĉifras la rezulton. Ĉi tiu vojo portas la saman efektivigeblan dosieron super DNS TXT-rekordoj, kiu postvivas mediojn kie eliranta HTTP estas filtrita sed DNS-rezolucio ne estas.
La prenitaj bajtoj estas skribitaj al /var/tmp/.cache_<8-hex> sur Unikso, aŭ %TEMP%\dotnet_diag_<8-hex>.exe en Vindozo — dosiernomo kiu legiĝas kiel .NET-diagnoza artefakto. En Unikso la dosiero ricevas reĝimon 0755. Lanĉo estas generi kun dekroĉita: vera, stdio: "ignori"Kaj senreferenco(), do la infano postvivas la Node-procezon kiu komencis ĝin; en Vindozo la alvoko aldonas fenestrojKaŝi: vera.
Du detaloj kompletigas la bildon. Helpanto difinita kiel konstanto _l = (…a) => procezo.stderr.skribi(“”) estas vokita ĉe ĉiu paŝo de la serĉado — ĝi skribas malplenan ĉenon kaj forĵetas siajn argumentojn, okupante la pozicion kie protokolado estus. Kaj ĉiu pakaĵo liveras 81 KB dosieron ĉe lib/telemetrio.js kies komento en la titolo priskribas "Analytics SDK" kun "HTTPS-transporto kun rotacio de finpunktoj kaj reprovo" kaj "DNS-bazita servo-malkovro por eraro-transiro". En la nuna versio, nenio postulas ĝin.
Ŝtupo 2 — la ŝargilo
La Linuksa x64-duuma dosiero estas statike ligita ELF kunpremita per UPX 3.96. La macOS-konstruo estas universala duuma dosiero kovranta x86_64 kaj arm64; la Vindoza konstruo estas senigita PE32+ konzola efektivigebla dosiero. Ĉiuj kvar estis prenitaj kaj statike ekzamenitaj; neniu estis efektivigita.
La importoj kaj tabelo de tekstaj elementoj de la Vindoza konstruo klare priskribas ĝian konduton. Ĝi solvas ĈuSerĉirkaŭaĵoĈeestas, KontroluMalproksimanSencirmilonĈeestanKaj NtQueryInformationProcess, kaj legas SISTEMO\NunaKontrolaAro\Servoj\Disko\Listigo — registro-pado kies valoroj identigas virtualajn diskoregilojn. Ĝi vokas AkiriDiskonLiberanSpaconEksW kaj TutmondaMemorstatoEks, kongrue kun kontrolado ĉu la rimedoj de la gastiganto kongruas kun mallongdaŭra analiza instanco.
Ĝi portas liston de uzantnomoj: AktualaUzanto, IT Administranto, Hong Lee, TESTOSKATOLO, hapubw-oj, milozs, timmy, administristo, malware, specimeno, viruso, medioPluraj el ĉi tiuj estas artefaktoj de publike dokumentitaj analizaj medioj.
Ĝi ankaŭ portas liston de finpunktaj sekurecaj produktoj kaj iliajn proceznomojn, listigitajn per KreiToolhelp32Snapshot kaj Procezo32UnuaW/Procezo32SekvaW:
- CrowdStrike Falcon (
csfalconservice,CSFalconContainer) - Nigra Karbono (
cb.exe) - Cylance (
cylancesvc.exe) - Bitdefender (
bdagent.exe) - Kaspersky (
avp.exe,kavfs.exe) - Trend Micro kaj Deep Security (
coreServiceShell,ds_agent.exe) - Fajro-Okulo/Trellix (
xagt.exe) - Tanio (
taniumclient.exe) - Hitman Pro (
hmpalert.exe) - elasta (
elastic-agent.exe,elastic-endpoint,filebeat.exe,winlogbeat.exe) - Wazuh kaj OSSEC (
wazuh-agent.exe,ossec-agent.exe) - Kontroli Punkton
- Windows Defendanto
Du pliaj simboloj ĉeestas: AmsiScanBuffer, la enirejo kiun Vindozo eksponas por skanado de memora enhavo, kaj EtwEventWrite, la funkcio per kiu Event Tracing por Vindozo registras okazaĵojn. Ambaŭ estas oftaj celoj por modifo en la procezo kiu subpremas la telemetrion kiun tiuj interfacoj alie produktus.
Persisto aperas dufoje en Vindozo. La duuma dosiero estas kopiita al %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe, kaj du mekanismoj referencas ĝin: valoro sub PROGRAMARO\Mikrosofto\Vindozo\AktualaVersio\Ekzekuti, kaj planita tasko registrita kiel
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHEST La taskopado, tasknomo, kaj efektivigebla nomo ĉiuj spegulas originalan Vindozan aŭdiokomponenton. /RL PLEJ ALTA petas la plej altan disponeblan privileginivelon.
La versio de macOS sekvas la saman ŝablonon kun platformo-taŭgaj nomoj: ĝi skribas liston de ecoj por ~/Biblioteko/Lanĉagentoj/com.apple.windowserver.helper.plist kaj metas sian ruleblan programon ĉe ~/.local/share/runtime/com.apple.runtimeĜi kontrolas /Aplikaĵoj/VMware Fusion.app kaj /Biblioteko/Aplikaĵa Subteno/VMware-Iloj.
Retkapablo ampleksas tri transportojn: WININET.dll por HTTPS kun https://%s:%d%s formata ĉeno, WS2_32.dll ingoj, kaj DNSAPI.dll kun DnsQuery_A apud a ĉ.%s.%s formatstring — la sama peckalkula serĉformo, kiun uzas la unua etapo.
La supra priskribo montras tion, kion la importoj, ĉenoj kaj registropadoj de la duuma dosiero montras dum inspektado. Publika plurmotora analizo de la sama Vindoza ekzemplo aldonas detalojn, kiujn statika legado de importa tabelo ne povas establi memstare, kaj estas atribuita ĉi tie anstataŭ esti ripetata kiel unuamana observado. Tiu analizo raportas, ke la AMSI kaj ETW referencoj ne estas nur solvitaj sed ankaŭ flikitaj — AmsiScanBuffer in amsi.dll kaj EtwEventWrite in ntdll.dll — kiu subpremas skanadon de memora enhavo kaj spuradon de eventoj por la procezo. Ĝi raportas la kontraŭanalizajn kontrolojn kiel tempigajn aldone al KontroluMalproksimanSencirmilonĈeestan, kaj identigas la AkiriFadenkuntekston voko kiel aparatara-rompopunkta kontrolo leganta la sencimigajn registrojn. Ĝi ankaŭ raportas unu-instancan mutex, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}, kaj nomoj Sistemsonservo kiel la valoro de Run-key. Tiu mutex-valoro ne estis inter la ĉenoj retrovitaj ĉi tie — la uzita eltira filtrilo ekskludis krampitajn majusklajn deksesumajn ĵetonojn — kaj ĝi estas registrita en la indikila tabelo surbaze de tiu publika analizo anstataŭ rekta observado.
stadio 3
La ŝargilo referencas plian aron da padoj sur la samaj gastigantoj. Ĉiuj estis atingeblaj dum analizo: beacon_linux.bin je 5.3 MB, beacon_mac.bin je 13.3 MB, ĝisdatigo_venko.exe je 10.3 MB, kaj brako.ujo je 4.3 MB. Ĉi tiuj ne estis prenitaj, kaj ilia konduto estas nekonata.
Por la Vindoza vojo, publika analizo de la ŝargilo priskribas kiel tiu tria etapo estas pritraktita: ĝi estas prenita per WinINet, alvenas ĉifrita, kaj estas malĉifrita en memoro kaj efektivigita reflektive — memoro asignita, importadoj solvitaj, translokigoj prilaboritaj, kaj kontrolo pasita al nova fadeno per KreiFadenonPro tio la tria etapo neniam estas skribita al la dosiersistemo, do dosierbazita detekto kaj post-okazaĵaj diskaj krimmedicinaj esploroj havas nenion por reakiri de ĝi. Ĝi ankaŭ signifas, ke preni la bajtojn de la livergastiganto donus ĉifritan tekston, ne analizeblan efektivigeblan dosieron.
templinio
Ĉiuj tempstampoj estas UTC kaj devenas de la metadatenoj de la registro npm, kiuj registras la kreadon kaj malpublikigon de pakaĵoj sendepende de iu ajn observanto.
| Kiam | Kio |
|---|---|
| 2026-07-31 09:25:05 → 09:29:56 | Dek nomoj kreitaj, ĉiu komencante ĉe versio 0.0.1, proksimume dek tri sekundojn aparte. |
| 2026-08-01 09:38 → 11:29 | Ekzistantaj nomoj grimpas tra ŝveligitaj versionumeroj, 6.1.9 tra 6.1.12, 9.9.9 tra 9.9.12, 8.9.3 tra 8.9.6, 5.4.6 tra 5.4.9. |
| 2026-08-01 13:04:14 → 13:04:18 | Naŭ plu beaver-ui-* nomoj kreitaj en kvar-sekunda ekblovo, ĉiu publikigita rekte ĉe 12.x versio sen antaŭa historio. |
| 2026-08-01 ~13:00–14:30 | Versioj klasifikitaj kiel malicaj dum mana revizio. |
| 2026-08-01 17:39:49 → 17:40:14 | Dek naŭ el la dudek nomoj neeldonitaj en dudek kvin sekundoj, sinsekve, kun interspaco de ĉirkaŭ 1.2 sekundoj. |
| 2026-08-02 18:58:41 | a.poltoradnev-package-c kreita denove sub malsama prizorganto-konto, versio 0.0.2. |
| 2026-08-02 19:20:28 | versio 33.9.5 publikigita sub la sama nomo. |
| 2026-08-02 20:14 | Ĉiuj tri livergastigantoj servas la duan kaj trian etapojn; DNS-rezerva respondo per blokkalkuloj. |
Du el ĉi tiuj enskriboj valoras atenton.
La eksplodo de la 13:04 metis naŭ pakaĵojn en la registron en kvar sekundoj, ĉiu kun ununura versio en la dekduoj kaj neniu 0.0.1 sub ĝi. Versionumeroj je ĉi tiu skalo, ĉe nomoj unu tagon aĝaj, ne priskribas eldonhistorion.
La malpublikiga sekvenco estas same mekanika: dek naŭ nomoj, dudek kvin sekundoj, eĉ interspacoj. npm registras ĉi tiujn kiel ordinarajn malpublikigajn eventojn anstataŭ la provizoran lokon, kiun registro-iniciatita forigo lasas, kio metas la agon ĉe la publikiga konto anstataŭ ĉe la registro.
Indikiloj de kompromiso
Gastigantoj kaj padoj estas malfunkciigitaj. Ne solvu aŭ prenu ilin el produktada sistemo.
| tipo | valoro |
|---|---|
| Livergastiganto | oob-worker[.]cf99-9b3[.]workers[.]dev |
| Livergastiganto | oob-worker[.]cf102-baf[.]workers[.]dev |
| Livergastiganto | oob-worker[.]cf103-070[.]workers[.]dev |
| DNS-transporto | tin[.]dl[.]well1[.]site (Linukso x64), tina[.] (brako64), ldr[.] (macOS), win[.] (Vindozo) — nombro de blokoj ĉe c.<domain>, datumoj ĉe <n>.<domain> |
| Padoj de la 2-a etapo | /pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe |
| Padoj de la 3-a etapo | /pkg/beacon_linux.bin, /pkg/beacon_mac.bin, /pkg/update_win.exe, /pkg/arm.bin |
| Falpado (Unikso) | /var/tmp/.cache_<8-hex> |
| Falpado (Vindozo) | %TEMP%\dotnet_diag_<8-hex>.exe |
| Persisto (Vindozo) | %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exetasko \Microsoft\Windows\Multimedia\SystemSoundsService; Valoro de la kurŝlosilo SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SystemSoundsService |
| Mutex (Vindozo) | Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9} |
| Persisto (macOS) | ~/Library/LaunchAgents/com.apple.windowserver.helper.plist; duuma ĉe ~/.local/share/runtime/com.apple.runtime |
| Kuru-unufoje stampo | /tmp/.analytics_state, %TEMP%\analytics_state (fenestro de 20,357 sekundoj) |
| Peti subskribon | HTTPS GET, IPv4-alfiksita, Uzanto-Agento: node-fetch/2.6 |
| Dosiero de la unua etapo | _polyfill.js, SHA-256 392dc9ec85042ce1796bfa9b8c7bf6e05c7710579aab8b7b1eb73788683883af |
| Nereferencita dosiero | lib/telemetry.js, SHA-256 2266c9b8e199daebe31a9afcb61d9b0d76706b63c92312fc8223d22de42e63c7 |
| Ŝtupo 2 (Linukso x64) | SHA-256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| Ŝtupo 2 (Linukso arm64) | SHA-256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| Ŝtupo 2 (macOS) | SHA-256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| Ŝtupo 2 (Vindozo) | SHA-256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
Pakaĵnomoj
Atribuo kaj observita konduto
Du npm-kontoj estas implikitaj. La dek naŭ neeldonitaj nomoj estis publikigitaj de unu konto; a.poltoradnev-pakaĵo-c estis re-registrita la 2-an de aŭgusto sub malsama kontonomo kaj malsama retpoŝta domajno. La kodo estas la sama genlinio en ambaŭ, kaj la dua registrado portas la samajn livergastigantojn, la samajn DNS-rezervdomajnojn, la saman forigan padan konstruon, kaj la saman unufoje-ruliĝstampon.
La reeldonita paro ankaŭ montras kiel ĝi estis kunmetita. Versioj 0.0.2 kaj 33.9.5 estas bajt-identaj krom la versia ĉeno en pako.jsonKaj la indekso.js sendita kiel 0.0.2 deklarita konstanto VERSIO = “33.9.5”Ambaŭ artefaktoj estis tranĉitaj el unu fontarbo kaj poste numeritaj. Ne ekzistas 0.0.2 disvolviĝa historio por la 0.0.2 liberigo por reprezenti.
La versinumeraro tra la tuta aro sekvas la saman logikon. Pakaĵnomoj en ĉi tiu kampanjo legiĝas kiel aferoj, kiuj ekzistus ene de organizo anstataŭ en publika registro: UI-komponenta aro, ESLint-agordo, SLA-probisto, pakaĵo nomita laŭ persono. Kiam konstruo solvas dependecon laŭ nomo kaj konsultas publikan registron kune kun privata, la pli alta versinumero estas tiu, kiu venkas. Nomo kreita ĉe 0.0.1 lunde kaj portante 12.9.6 marde estas poziciigita por tiu komparo.
La du publikigaj ondoj ankaŭ diferencas laŭ maniero kiu sugestas ripeton. La pli frua kodnomis sian ŝarĝdosieron agordo.js kaj listigis kvin liverajn gastigantojn; la aktuala dosiero nomiĝas _polyfill.js kaj listigas tri. La pli frua versio forigis la faligitan dosieron kvin sekundojn post lanĉo, lasante la procezon funkcii de forigita inodo; la nuna versio ne faras tion. La nereferencata lib/telemetrio.js restas en la tarball trans ambaŭ, ankoraŭ sendita, jam ne kabligita.
Unu observado pri la ŝaltiloj valoras mencii antaŭecisvere, ĉar ĝi kontraŭas komunan interpreton. MALŜALTI_TELEMETRIO, ANALIZO_OPT_OUTKaj NE_SPURI estas respektataj, kaj ili estas kontrolitaj antaŭ ol io ajn alia okazas. Esploristo, kies analiza medio agordas iun ajn el ili, observas pakaĵon, kiu faras tute nenion.
Efiko kaj kion defendantoj povas fari
La praktika konsekvenco de la import-tempa ellasilo estas mallarĝa kaj valoras mencioni ĝin aparte. npm install –ignore-scripts malhelpas la funkciadon de vivciklaj skriptoj, kaj ĝi estas bona konsilo. Ĝi ne havas efikon ĉi tie, ĉar ĉi tiu kodo ne uzas vivciklan skripton. La utila ŝarĝo funkcias kiam aplikaĵa kodo, testfunkciado, faskigilo aŭ linter unue importas la modulon. Sur CI-rulilo kiu instalas kaj poste tuj konstruas, la du estas sekundojn aparte.
Por ĉasado, la daŭraj signaloj estas strukturaj prefere ol laŭvortaj. La gastigantoj, la dosiernomo, kaj la falvojoj ŝanĝiĝos; ĉi tiujn formojn estas pli malfacile varii:
- Modula enirejo kies fina deklaro estas provu { postuli("./x"); } kapti (_) {} ĉirkaŭ dosiero kiu ne estas parto de la eksportita API. Pakaĵo kun aŭtentika poliplenigo importas ĝin ĉe la supro kaj uzas ĝian rezulton. Engluti ĉiun eraron de importo sube de la dosiero ne estas erartraktado.
- Gastigantaj ĉenoj kunmetitaj de .kunigi("") el aro da fragmentoj. Legitima kodo ne havas kialon dividi gastigantnomon trans tabelelementojn.
- Pakaĵo kies deklaritaj dependecoj estas malplenaj sed kiu atingas https, dnsKaj infana_procezo dum importado. Reakiro plus efektivigo en pakaĵo kiu reklamas UI-komponenton estas la tuta trovo.
- Versionumeroj malkongruaj kun la aĝo de pakaĵo. Nomo unue publikigita antaŭ tagoj je ducifera grava versio, sen interaj eldonoj, priskribas ion alian ol ĝian disvolviĝon.
- Skribas al / var / tmp or % TEMP% sekvas chmod ĝis 0755 kaj dekroĉita frajo. La sekvenco estas mallonga, ordigita, kaj malofte bonkora kune.
Ĉe Vindozaj komputiloj ekzistas du malmultekostaj, altfidaj kontroloj. La persistecaj artefaktoj estas fiksitaj ĉenoj kaj neniu el ili apartenas al pura sistemo: planita tasko ĉe \Microsoft\Windows\Multimedia\SystemSoundsService, valoro de Run-key nomita Sistemsonservo, kaj rulebla dosiero de tiu nomo sub %APPDATA%\Microsoft\Windows\Temoj\La originala Vindoza sonservo ne troviĝas en iu ajn el tiuj lokoj. Due, la ŝargilo uzas fiksan unu-instancan mutex-on, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}; ĝia ĉeesto sur gastiganto estas indikilo, kaj ĉar la ŝargilo traktas ekzistantan mutex kiel "jam funkciantan", antaŭkrei ĝin estas farebla mallongdaŭra inokulado dum riparado estas planita.
Detekto en la tria etapo estas pli malfacila problemo kaj valoras klarigi ĝin. Laŭ la raporto donita de publika analizo, ĝi estas malĉifrita kaj mapita en memoro anstataŭ skribita al disko, do dosierskanado kaj diska krimmedicino ne vidos ĝin. Kio restas observebla estas la propra spuro de la ŝargilo — la persistaj enigoj, la mutex, kaj elirantaj petoj al la livergastigantoj aŭ la DNS-TXT-domajnoj.
Por medioj kiuj solvas dependecojn de kaj privata kaj publika registro, la mildigo ne ŝanĝiĝas per io ajn ĉi tie: ampleksi internajn nomojn tiel ke publika nomo ne povas kontentigi ilin, kaj alfiksi rezolucion al la interna registro por tiuj ampleksoj. La versio-inflacia konduto priskribita supre funkcias nur kie pli alta publika versio povas gajni nomon.
Fine, la malpublikigo valoras atente legi anstataŭ kiel finon. Dek naŭ nomoj forlasis la registron en dudek kvin sekundoj kaj unu revenis tagon poste sub nova konto, kun la livera infrastrukturo netuŝita tra la tuta procezo. Forigo de pakaĵoj ne estas forigo de la operacio; la gastigantoj daŭre servis ĉiun etapon dum ĉi tio estis skribita. Ĉiu dependecarbo, kiu solvis unu el ĉi tiuj nomoj inter la 31a de julio kaj la 1a de aŭgusto, devus esti traktata kvazaŭ havanta la ŝancon plenumi la unuan etapon, sendepende de ĉu la nomo ankoraŭ ekzistas aŭ ne.
Referencoj
- Plurmotora analizo de la Vindoza ŝargilo — fonto por la AMSI/ETW-flikado, reflekta enmemora efektivigo, kaj mutex-detalo atribuitaj supre.
- dokumentado pri npm-skriptoj — la vivciklajn eventojn, kiujn ĉi tiu kampanjo ne uzas.
- dokumentado pri instalado de npm — kovras –ignori-skriptojn kaj ĝia amplekso.




