TL; DR
Twintig npm-pakkette wat oor twee dae laat in Julie en vroeg in Augustus 2026 gepubliseer is, bied hulself aan as interne UI-komponentbiblioteke en gedeelde backend-hulpprogramme. Nie een van hulle implementeer die funksionaliteit wat hulle adverteer nie. Elkeen stuur 'n stompklas, 'n README wat die pakket as intern beskryf, en 'n lêer genaamd. _polyfill.js.
Die interessante deel is waar daardie lêer vandaan aangeroep word. Dit is nie 'n installasiehaak nie — die manifeste verklaar glad nie voorinstallasie, installasie of nainstallasie nie. In plaas daarvan, die laaste reël van index.js lui soos volg: try { require("./_polyfill"); } catch (_) {}Die vrag loop die eerste keer wat toepassingskode die pakket invoer. Installeer met --ignore-scripts, die standard advies vir die vermindering van blootstelling aan die voorsieningsketting tydens installasie, verhoed dit nie.
Wat _polyfill.js doen is om 'n platformspesifieke uitvoerbare lêer van een van drie Cloudflare Workers-gashere te haal, dit na 'n tydelike gids onder 'n ewekansige naam te skryf, dit as uitvoerbaar te merk en dit los van die ouerproses te begin. Daardie uitvoerbare lêer is self 'n laaier: dit lys eindpunt-sekuriteitsprodukte volgens prosesnaam, kontroleer die huidige gebruikersnaam teen bekende analise-omgewingrekeninge, herstel die AMSI- en ETW-telemetrie-koppelvlakke in die geheue, installeer persistensie onder die naam van 'n Windows-klankkomponent en haal 'n derde binêre lêer van etlike megagrepe groot op. Die derde fase arriveer geïnkripteer en is gedekripteer en in die geheue uitgevoer eerder as na die skyf geskryf.
Op 1 Augustus, ongeveer vier uur nadat die pakkette as kwaadwillig bevestig is tydens handmatige hersiening, is negentien van die twintig name deur hul eie uitgewer in 'n reeks van vyf-en-twintig sekondes van npm verwyder. Op 2 Augustus is een van daardie name weer geregistreer – deur 'n ander rekening met dieselfde kode. Die afleweringsinfrastruktuur het al drie stadiums bedien toe hierdie geskryf is.
| Pakkette | 20 npm-name, ~74 gepubliseerde weergawes |
| Benoem temas | beaver-ui-* (13) accounts-* (3), plus afisha-storybook-default, bcore-bravo-eslint-config, arbocrate-sla-prober-arbocrate-sla-prober-core, a.poltoradnev-package-c |
| sneller | Module-invoer (require), nie 'n npm lewensiklusskrip nie |
| Stadium 1 | _polyfill.js — herwinning en lansering |
| Stadium 2 | Staties gekoppelde laaier, UPX-gepak op Linux; eindpunt-sekuriteitsopsomming, AMSI/ETW-opdatering, volharding |
| Stadium 3 | beacon_linux.bin / beacon_mac.bin / update_win.exe, 4–13 MB; geënkripteer gelewer, in geheue uitgevoer |
| Platforms | Linux x64 en arm64, macOS universeel, Windows x64 |
| uitgewers | Twee rekeninge, een kodebasis |
| Status | 19 van 20 name ongepubliseer deur die operateur; 1 herpubliseer en in werking gestel; afleweringsinfrastruktuur in werking gestel |
Aanvalsanatomie
Fase 1 — die pakket
Elke lid stuur dieselfde drie-lêer vorm. index.js voer 'n klas uit met 'n init() wat 'n boolean stel, 'n weergawe(), En 'n konfigureer() wat 'n opsiesobjek saamsmelt. Niks anders nie. LEESMY.md gee 'n installasielyn, 'n vereis lyn, en die sin “Interne pakket. Sien CONTRIBUTING.md vir riglyne” — BYDRAE.md is nie in die tarbal nie.
_polyfill.js is 'n bietjie minder as 5 KB en lees as gewone infrastruktuurkode. Dit maak oop met drie omgewingskontroles:
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return; Daardie veranderlikes is konvensionele privaatheidskontroles. Hier bepaal hulle of 'n binêre lêer afgelaai en uitgevoer word. 'n Masjien wat stel MOENIE_NASPOR word heeltemal oorgeslaan.
Volgende kom 'n eenmalige stempel: 'n lêer by /tmp/.analytics_state, of analitiese_status vir % TEMP% op Windows, waarvan die wysigingstyd vergelyk word met 'n venster van 20 357 sekondes. Binne daardie venster keer die module onmiddellik terug, dus herhaalde invoere tydens 'n bouproses lewer een herwinningspoging eerder as dosyne op.
Die bestemmingsgashere is nie as letterlikes teenwoordig nie. Hulle word tydens looptyd uit fragmente saamgestel:
["oob-worker.cf102-","baf.workers.d","ev"].join("") Drie gashere word so gebou en voor gebruik geskommel, so die volgorde wissel per uitvoering. Herwinning is 'n HTTPS GET wat aan IPv4 vasgepen is met 'n Gebruikersagent of node-fetch/2.6 — 'n geloofwaardige waarde vir 'n Node-proses om uit te reik. 'n Reaksie onder 1 000 grepe word weggegooi en die volgende gasheer word probeer.
Indien al drie faal, val die module terug na DNS. Dit reik 'n TXT-navraag uit vir c. om 'n klomptelling te verkry, dan versoek 0. deur n. in groepe van tien, koppel die antwoorde aanmekaar en base64-dekodeer die resultaat. Hierdie pad dra dieselfde uitvoerbare lêer oor DNS TXT-rekords, wat omgewings oorleef waar uitgaande HTTP gefiltreer word, maar DNS-resolusie nie.
Die herwinbare grepe word geskryf na /var/tmp/.cache_<8-heks> op Unix, of %TEMP%\dotnet_diag_<8-heks>.exe op Windows — 'n lêernaam wat lees as 'n .NET diagnostiese artefak. Op Unix word die lêer modus 0755 gegee. Begin is kuit met losstaande: waar, stdio: “ignoreer”, en ongeverwysing(), so die kind oorleef die Node-proses wat dit begin het; op Windows voeg die aanroeping by venstersVersteek: waar.
Twee besonderhede voltooi die prentjie. 'n Helper gedefinieer as const _l = (…a) => proses.stderr.skryf(“”) word by elke stap van die herwinning geroep — dit skryf 'n leë string en gooi sy argumente weg, en beklee die posisie waar logging sou wees. En elke pakket stuur 'n 81 KB-lêer by lib/telemetrie.js waarvan die opskrifkommentaar 'n "Analytics SDK" beskryf met "HTTPS-vervoer met eindpuntrotasie en herprobeer" en "DNS-gebaseerde diensontdekking vir oorskakeling". In die huidige bou word dit nie vereis nie.
Fase 2 — die laaier
Die Linux x64-binêre lêer is 'n staties gekoppelde ELF wat saamgepers is met UPX 3.96. Die macOS-bou is 'n universele binêre lêer wat x86_64 en arm64 dek; die Windows-bou is 'n gestroopte PE32+-konsole-uitvoerbare lêer. Al vier is opgespoor en staties ondersoek; geeneen is uitgevoer nie.
Die Windows-bou se invoere en stringtabel beskryf die gedrag daarvan duidelik. Dit los dit op IsDebuggerAanwesig, CheckRemoteDebuggerAanbieding, en NtQueryInligtingProses, en lees STELSEL\HuidigeBeheerstel\Dienste\Skyf\Enum — 'n registerpad waarvan die waardes virtuele skyfbeheerders identifiseer. Dit roep KryDiskVryeSpasieExW en GlobaleGeheueStatusEx, in ooreenstemming met die kontrolering of die gasheer se hulpbronne ooreenstem met 'n kortstondige analise-instansie.
Dit bevat 'n lys van gebruikersname: Huidige gebruiker, IT-administrateur, Hong Lee, TOETSBOKS, hapubws, milozs, Timmy, admin, malware, monster, virus, omgewingVerskeie hiervan is artefakte van publiek gedokumenteerde analise-omgewings.
Dit bevat ook 'n lys van eindpunt-sekuriteitsprodukte en hul prosesname, opgesom deur CreateToolhelp32Snapshot en Proses32EersteW/Proses32VolgendeW:
- CrowdStrike Falcon (
csfalconservice,CSFalconContainer) - Koolstof swart (
cb.exe) - Silans (
cylancesvc.exe) - Bitdefender (
bdagent.exe) - Kaspersky (
avp.exe,kavfs.exe) - Trend Micro en Deep Security (
coreServiceShell,ds_agent.exe) - FireEye/Trallix (
xagt.exe) - Taan (
taniumclient.exe) - HitmanPro (
hmpalert.exe) - Rek (
elastic-agent.exe,elastic-endpoint,filebeat.exe,winlogbeat.exe) - Wazuh en OSSEC (
wazuh-agent.exe,ossec-agent.exe) - Check Point
- Windows Defender
Twee verdere simbole is teenwoordig: AmsiScanBuffer, die toegangspunt wat Windows blootstel vir inhoudskandering in die geheue, en EtwEventWrite, die funksie waardeur Event Tracing vir Windows gebeurtenisse opneem. Beide is algemene teikens vir wysigings in die proses wat die telemetrie onderdruk wat daardie koppelvlakke andersins sou produseer.
Persistensie verskyn twee keer op Windows. Die binêre lêer word gekopieer na %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe, en twee meganismes verwys daarna: 'n waarde onder SAGTEWARE\Microsoft\Windows\Huidige Weergawe\Begin, en 'n geskeduleerde taak geregistreer as
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHEST Die taakpad, taaknaam en uitvoerbare naam weerspieël almal 'n egte Windows-klankkomponent. /RL HOOGSTE versoek die hoogste beskikbare voorregvlak.
Die macOS-bou volg dieselfde patroon met platform-gepaste name: dit skryf 'n eienskapslys aan ~/Biblioteek/BeginAgente/com.apple.windowserver.helper.plist en plaas die uitvoerbare lêer by ~/.local/share/runtime/com.apple.runtimeDit kyk vir /Toepassings/VMware Fusion.app en /Biblioteek/Toepassingsondersteuning/VMware-gereedskap.
Netwerkvermoë strek oor drie vervoer: WININET.dll vir HTTPS met 'n https://%s:%d%s formaat string, WS2_32.dll voetstukke, en DNSAPI.dll met DnsQuery_A langs 'n c.%s.%s formaat string — dieselfde chunk-count navraagvorm wat die eerste fase gebruik.
Die bogenoemde beskrywing is wat die binêre lêer se invoere, stringe en registerpaaie tydens inspeksie wys. Publieke multi-enjin-analise van dieselfde Windows-voorbeeld voeg detail by wat 'n statiese lesing van 'n invoertabel nie op sy eie kan vasstel nie, en word hier toegeskryf eerder as hersien as eerstehandse waarneming. Daardie analise rapporteer dat die AMSI- en ETW-verwysings nie bloot opgelos is nie, maar geplak is — AmsiScanBuffer in amsi.dll en EtwEventWrite in ntdll.dll — wat inhoudskandering in die geheue en gebeurtenisopsporing vir die proses onderdruk. Dit rapporteer die anti-analise-kontroles as tydsberekeningsgebaseerd benewens CheckRemoteDebuggerAanbieding, en identifiseer die KryDraadKonteks roep as 'n hardeware-breekpuntkontrole wat die ontfoutregisters lees. Dit rapporteer ook 'n enkel-instansie mutex, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}, en name StelselKlankediens as die Run-key-waarde. Daardie mutex-waarde was nie onder die stringe wat hier herwin is nie – die onttrekkingsfilter wat gebruik is, het versterkte hoofletter-heks-tokens uitgesluit – en dit word in die aanwysertabel aangeteken op grond van daardie publieke analise eerder as direkte waarneming.
Stadium 3
Die laaier verwys na 'n verdere stel paaie op dieselfde gashere. Almal was bereikbaar tydens analise: beacon_linux.bin teen 5.3 MB, beacon_mac.bin teen 13.3 MB, update_win.exe teen 10.3 MB, en arm.bin teen 4.3 MB. Hierdie is nie opgespoor nie, en hul gedrag is onbekend.
Vir die Windows-pad beskryf die publieke analise van die laaier hoe daardie derde fase hanteer word: dit word oor WinINet gehaal, arriveer geïnkripteer, en word in die geheue gedekripteer en reflektief uitgevoer - geheue toegeken, invoere opgelos, hervestigings verwerk, en beheer word na 'n nuwe draad oorgedra via. SkepDraadOm dié rede word die derde fase nooit na die lêerstelsel geskryf nie, dus het lêergebaseerde opsporing en skyfforensiese ondersoeke na die voorval niks om daarvan te herstel nie. Dit beteken ook dat die herwinning van die grepe van die afleweringsgasheer gekisfereerde teks sal oplewer, nie 'n analiseerbare uitvoerbare lêer nie.
Tydlyn
Alle tydstempels is UTC en kom van npm-registermetadata, wat pakketskepping en -depublikasie onafhanklik van enige waarnemer aanteken.
| Wanneer | Wat |
|---|---|
| 2026-07-31 09:25:05 → 09:29:56 | Tien name geskep, elk beginnend by weergawe 0.0.1, ongeveer dertien sekondes uitmekaar. |
| 2026-08-01 09:38 → 11:29 | Bestaande name klim deur opgeblase weergawenommers, 6.1.9 deur 6.1.12, 9.9.9 deur 9.9.12, 8.9.3 deur 8.9.6, 5.4.6 deur 5.4.9. |
| 2026-08-01 13:04:14 → 13:04:18 | Nege verder beaver-ui-* name geskep in 'n vier-sekonde-uitbarsting, elk direk gepubliseer teen 'n 12.x-weergawe sonder vorige geskiedenis. |
| 2026-08-01 ~13:00–14:30 | Weergawes geklassifiseer as kwaadwillig tydens handmatige hersiening. |
| 2026-08-01 17:39:49 → 17:40:14 | Negentien van die twintig name ongepubliseer in vyf-en-twintig sekondes, opeenvolgend, ongeveer 1.2 sekondes uitmekaar. |
| 2026-08-02 18:58:41 | a.poltoradnev-package-c weer geskep onder 'n ander onderhouerrekening, weergawe 0.0.2. |
| 2026-08-02 19:20:28 | weergawe 33.9.5 onder dieselfde naam gepubliseer. |
| 2026-08-02 20:14 | Al drie afleweringsgashere bedien stadiums twee en drie; DNS-terugval beantwoord met chunktellings. |
Twee van hierdie inskrywings is die moeite werd om by stil te staan.
Die 13:04-uitbarsting het nege pakkette in vier sekondes op die register geplaas, elk met 'n enkele weergawe in die twaalftalle en geen 0.0.1 daaronder. Weergawenommers op hierdie skaal, op name wat een dag oud is, beskryf nie 'n vrystellingsgeskiedenis nie.
Die depublikasievolgorde is ewe meganies: negentien name, vyf-en-twintig sekondes, ewe spasiëring. npm teken hierdie aan as gewone depublikasiegebeurtenisse eerder as die plekhouer wat 'n register-geïnisieerde verwydering agterlaat, wat die aksie by die publiseringsrekening plaas eerder as by die register.
Aanwysers van kompromie
Gashere en paaie is gedefangsteer. Moenie hulle oplos of van 'n produksiestelsel herwin nie.
| Tipe | waarde |
|---|---|
| Afleweringsgasheer | oob-worker[.]cf99-9b3[.]workers[.]dev |
| Afleweringsgasheer | oob-worker[.]cf102-baf[.]workers[.]dev |
| Afleweringsgasheer | oob-worker[.]cf103-070[.]workers[.]dev |
| DNS-vervoer | tin[.]dl[.]well1[.]site (Linux x64), tina[.] (arm64), ldr[.] (macOS), win[.] (Windows) — stuktelling by c.<domain>, data by <n>.<domain> |
| Fase-2 paaie | /pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe |
| Fase-3 paaie | /pkg/beacon_linux.bin, /pkg/beacon_mac.bin, /pkg/update_win.exe, /pkg/arm.bin |
| Droppad (Unix) | /var/tmp/.cache_<8-hex> |
| Droppad (Windows) | %TEMP%\dotnet_diag_<8-hex>.exe |
| Volharding (Windows) | %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exetaak \Microsoft\Windows\Multimedia\SystemSoundsService; Loopsleutelwaarde SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SystemSoundsService |
| Mutex (Windows) | Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9} |
| Volharding (macOS) | ~/Library/LaunchAgents/com.apple.windowserver.helper.plist; binêr by ~/.local/share/runtime/com.apple.runtime |
| Eenmalige loop-stempel | /tmp/.analytics_state, %TEMP%\analytics_state (20 357 s venster) |
| Versoek handtekening | HTTPS GET, IPv4-gepen, Gebruiker-Agent: node-fetch/2.6 |
| Fase-1-lêer | _polyfill.js, SHA-256 392dc9ec85042ce1796bfa9b8c7bf6e05c7710579aab8b7b1eb73788683883af |
| Ongeverwysde lêer | lib/telemetry.js, SHA-256 2266c9b8e199daebe31a9afcb61d9b0d76706b63c92312fc8223d22de42e63c7 |
| Fase 2 (Linux x64) | SHA-256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| Fase 2 (Linux arm64) | SHA-256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| Fase 2 (macOS) | SHA-256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| Fase 2 (Vensters) | SHA-256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
Pakketname
Toeskrywing en waargenome gedrag
Twee npm-rekeninge is betrokke. Die negentien ongepubliseerde name is deur een rekening gepubliseer; a.poltoradnev-pakket-c is op 2 Augustus herregistreer onder 'n ander rekeningnaam en 'n ander e-posdomein. Die kode is dieselfde afstamming in beide, en die tweede registrasie dra dieselfde afleweringsgashere, dieselfde DNS-terugvaldomeine, dieselfde drop-path-konstruksie en dieselfde eenmalige-loop-stempel.
Die heruitgegee paar wys ook hoe dit saamgestel is. 0.0.2 en 33.9.5 is byte-identies afgesien van die weergawestring in pakket.json, En die index.js gestuur as 0.0.2 verklaar konstante WEERGAWE = “33.9.5”Beide artefakte is uit een bronboom gesny en daarna genommer. Daar is geen 0.0.2 ontwikkelingsgeskiedenis vir die 0.0.2 vrylating om te verteenwoordig.
Die weergawenommering oor die hele stel volg dieselfde logika. Pakketname in hierdie veldtog lees as dinge wat binne 'n organisasie sou bestaan eerder as op 'n publieke register: 'n UI-komponentstel, 'n ESLint-konfigurasie, 'n SLA-prober, 'n pakket wat na 'n persoon vernoem is. Wanneer 'n bou 'n afhanklikheid volgens naam oplos en 'n publieke register saam met 'n private een raadpleeg, is die hoër weergawenommer die een wat wen. 'n Naam geskep by 0.0.1 op Maandag en dra 12.9.6 op Dinsdag is geposisioneer vir daardie vergelyking.
Die twee publikasiegolwe verskil ook op 'n manier wat iterasie suggereer. Die vorige kode het sy vraglêer genoem. opstelling.js en het vyf afleweringsgashere gelys; die huidige lêer is genoem _polyfill.js en lys drie. Die vorige weergawe het die lêer wat verwyder is vyf sekondes na die bekendstelling verwyder, wat die proses vanaf 'n verwyderde inode laat loop het; die huidige weergawe doen dit nie. Die ongeverwysde lib/telemetrie.js bly in die tarbal oor beide, steeds gestuur, nie meer gekoppel nie.
Een waarneming oor die doodskakelaars is die moeite werd om vooraf te noemcisely, want dit sny teen 'n algemene lesing. DISABLE_TELEMETRY, ANALISE_OPT_OUT, en MOENIE_NASPOR word geëerbiedig, en hulle word nagegaan voordat enigiets anders gebeur. 'n Navorser wie se ontledingsomgewing enige van hulle stel, neem 'n pakket waar wat glad niks doen nie.
Impak en wat verdedigers kan doen
Die praktiese gevolg van die invoertyd-sneller is smal en die moeite werd om op sy eie te noem. npm installeer –ignore-skripte verhoed dat lewensiklusskripte loop, en dit is goeie raad. Dit het geen effek hier nie, want hierdie kode gebruik nie 'n lewensiklusskript nie. Die vrag loop wanneer toepassingskode, 'n toetslopie, 'n bundeler of 'n linter die module eers invoer. Op 'n CI-loper wat installeer en dan onmiddellik bou, is die twee sekondes uitmekaar.
Vir jag is die duursame seine struktureel eerder as letterlik. Die gashere, die lêernaam en die valpaaie sal verander; hierdie vorms is moeiliker om te varieer:
- 'n Module-intreepunt waarvan die finale stelling 'n is probeer { vereis(“./x”); } vang (_) {} rondom 'n lêer wat nie deel van die uitgevoerde API is nie. 'n Pakket met 'n egte polivul-invoer invoer dit bo-aan en gebruik die resultaat daarvan. Om elke fout van 'n invoer onderaan die lêer te sluk, is nie fouthantering nie.
- Gasheerstringe saamgestel deur .sluit aan(“”) uit 'n reeks fragmente. Wettige kode het geen rede om 'n gasheernaam oor skikkingselemente te verdeel nie.
- 'n Pakket waarvan die verklaarde afhanklikhede leeg is, maar wat na https, DNS, en kind_proses tydens invoer. Herwinning plus uitvoering in 'n pakket wat 'n UI-komponent adverteer, is die hele bevinding.
- Weergawenommers is nie teenstrydig met 'n pakket se ouderdom nie. 'n Naam wat dae gelede die eerste keer gepubliseer is by 'n dubbelsyfer-hoofweergawe, sonder tussenliggende vrystellings, beskryf iets anders as die ontwikkeling daarvan.
- Skryf aan / var / tmp or % TEMP% gevolg deur a chmod tot 0755 en 'n losstaande kuit. Die reeks is kort, geordend en selde goedaardig saam.
Op Windows-gashere is daar twee goedkoop, hoë-betroubaarheidstoetse. Die volhardingsartefakte is vaste stringe en geeneen van hulle hoort op 'n skoon stelsel nie: 'n geskeduleerde taak by \Microsoft\Windows\Multimedia\Stelselklankdiens, 'n Run-sleutelwaarde met die naam StelselKlankediens, en 'n uitvoerbare lêer met daardie naam onder %APPDATA%\Microsoft\Windows\Temas\Die egte Windows-klankdiens is nie op enige van daardie plekke nie. Tweedens gebruik die laaier 'n vaste enkel-instansie mutex, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}; die teenwoordigheid daarvan op 'n gasheer is 'n aanduiding, en omdat die laaier 'n bestaande mutex as "reeds aan die gang" behandel, is die voorafskepping daarvan 'n lewensvatbare korttermyn-inenting terwyl remediëring geskeduleer word.
Opsporing in die derde fase is 'n moeiliker probleem en die moeite werd om duidelikheid daaroor te hê. Op grond van die rekening wat deur openbare analise gegee word, word dit gedekripteer en in die geheue gekarteer eerder as na die skyf geskryf, dus sal lêerskandering en skyfforensiese ondersoeke dit nie sien nie. Wat waarneembaar bly, is die laaier se eie voetspoor - die persistensie-inskrywings, die mutex en uitgaande versoeke na die afleweringsgashere of die DNS-TXT-domeine.
Vir omgewings wat afhanklikhede van beide 'n private register en 'n publieke een oplos, bly die versagting onveranderd deur enigiets hier: interne name van die omvang sodat 'n publieke naam nie aan hulle kan voldoen nie, en die resolusie vir daardie omvange aan die interne register vaspen. Die weergawe-inflasiegedrag wat hierbo beskryf word, werk slegs waar 'n hoër publieke weergawe 'n naam kan wen.
Laastens, die depublikasie is die moeite werd om noukeurig te lees eerder as om dit as 'n einde te beskou. Negentien name het die register binne vyf-en-twintig sekondes verlaat en een het 'n dag later onder 'n nuwe rekening teruggekeer, met die afleweringsinfrastruktuur deurgaans onaangeraak. Die verwydering van pakkette is nie die verwydering van die operasie nie; die gashere het voortgegaan om elke stadium te bedien terwyl dit geskryf is. Enige afhanklikheidsboom wat een van hierdie name tussen 31 Julie en 1 Augustus opgelos het, moet behandel word asof hulle die geleentheid gehad het om stadium een uit te voer, ongeag of die naam nog bestaan of nie.
Verwysings
- Multi-enjin analise van die Windows-laaier — bron vir die AMSI/ETW-lapting, reflektiewe in-geheue-uitvoering en mutex-detail hierbo toegeskryf.
- npm-skripte dokumentasie — die lewensiklusgebeurtenisse wat hierdie veldtog nie gebruik nie.
- npm installasie dokumentasie — omslae –Ignoreer skrifte en die omvang daarvan.




