- Útočník kompromitoval npm účet primárního správce platformy Axios a vydal verze 1.14.1 a 0.30.4 s fiktivní závislostí plain-crypto-js, která během instalace nasadila multiplatformní RAT.
- Malware kontaktoval server C2 (sfrclak[.]com) a stahoval specifické datové soubory pro Windows, macOS a Linux, prováděl průzkum systému, pravidelně udržoval signální majáky a v některých případech i zajišťoval trvalost.
- Útok, který Google a další výzkumníci připisují severokorejskému aktérovi UNC1069, kombinoval přibližně tříhodinové okno expozice se sofistikovanou kampaní sociálního inženýrství namířenou proti správcovi s cílem odcizit jeho přihlašovací údaje.
- Organizace, které byly schopny nainstalovat dotčené verze, se musí zavázat k podniknutí kroků, vyhledávání artefaktů RAT, rotaci přihlašovacích údajů, zabezpečení zabezpečených verzí systému Axios a posílení svých kontrol dodavatelského řetězce, CI/CD a správy závislostí.
Komunita vývojářů v JavaScriptu právě zažila jeden z těch strachů, které vás nutí přehodnotit, jak moc důvěřujete svým závislostem, jak dokazují problémy se zranitelnostmi knihoven . Axios, jedna z nejpoužívanějších HTTP knihoven v ekosystému, byla na npm manipulována k distribuci trojského koně pro vzdálený přístup (RAT) prostřednictvím zdánlivě legitimních verzí. Incident trval jen několik hodin, ale jasně ukázal, že dodavatelský řetězec softwaru visí na mnohem tenčí niti, než si mnozí mysleli.
Vážným problémem není jen to, že se útočníkům podařilo propašovat malware do balíčku stahovaného desítky nebo stovky milionůkrát týdně. Skutečným problémem je, že to udělali únosem npm účtu hlavního správce a publikováním „oficiálních“ verzí, které vypadaly normálně a nedotýkaly se ani řádku zdrojového kódu Axiosu . Veškeré škodlivé chování spočívalo ve fantomové závislosti speciálně navržené pro tento útok.
Jak vznikl závazek společnosti Axios k NPM
Abychom pochopili rozsah incidentu, musíme začít u vstupního bodu. Útočníkovi se podařilo převzít kontrolu nad npm účtem „jasonsaayman“, hlavního správce Axiosu, a změnil přidruženou e-mailovou adresu na adresu pod svou kontrolou , hostovanou na Proton Mail. Od té chvíle měl volnou ruku v publikování nových verzí balíčku, jako by byl správcem.
Pomocí těchto přihlašovacích údajů nahrál dvě škodlivé verze Axiosu: 1.14.1 a 0.30.4 , které pokrývaly obě hlavní větve projektu. Nahrávání proběhlo s odstupem pouhých 39 minut a podle analýzy StepSecurity bylo provedeno přímo z npm pomocí klasického dlouhodobého tokenu, čímž se zcela obešel obvyklý CI/CD pipeline založený na akcích GitHubu.
Osmnáct hodin před finálním útokem akter již publikoval „čistou“ verzi související se škodlivou závislostí v registru npm . Tento předběžný krok sloužil k vygenerování historie a zabránění spuštění některých automatických kontrol, když se v době útoku objevil zcela nový balíček.
Zajímavé je, že útočníci neupravili zdrojový kód Axiosu ani neprovedli žádné viditelné změny v repozitáři GitHub . Verze 1.14.1 a 0.30.4 ve skutečnosti neměly žádné odpovídající commity ani tagy na GitHubu; existovaly pouze na npm. Klíčový rozdíl byl v souboru závislostí balíčku, který byl publikován v registru.
Axios za normálních okolností deklaruje pouze tři závislosti: follow-redirects, form-data a proxy-from-env . V kompromitovaných verzích se však objevila čtvrtá závislost, která v projektu dříve neexistovala: plain-crypto-js, verze 4.2.1. Tato fantomová knihovna nebyla v kódové základně Axiosu nikde použita, ale obsahovala skript po instalaci, který se spouštěl automaticky při instalaci balíčku pomocí npm, pnpm nebo podobných nástrojů.
plain-crypto-js: fantomová závislost nasazená RAT
Klíčem k útoku byla tato dodatečná závislost. Soubor plain-crypto-js byl publikován na npm uživatelem se jménem „nrwise“, rovněž s e-mailovou adresou Proton Mail, a jeho jediným účelem bylo spustit obfuskovaný postinstalační skript v Node.js (setup.js) . Tento skript fungoval jako dropper, tedy jako počáteční instalační program pro druhou fázi malwaru.
Při instalaci Axiosu v jedné z jeho infikovaných verzí postinstalační životní cyklus npm automaticky spustil kód plain-crypto-js, aniž by vývojář musel provést jakoukoli speciální akci . Dropper se připojil k command and control (C2) serveru aktivnímu v doméně sfrclakcom, naslouchal na portu 8000 a stáhl datovou zátěž specifickou pro operační systém postiženého počítače; toto chování lze identifikovat analýzou síťového provozu.
Výzkumníci ze StepSecurity a dalších analytických týmů popisují velmi opatrné chování. Po spuštění škodlivého obsahu dropper odstranil své vlastní stopy: smazal skript postinstall, nahradil soubor package.json „čistou“ verzí a zanechal soubor node_modules, který se na první pohled jevil neškodně . Následná manuální kontrola tak nenašla škodlivý kód přímo v Axiosu.
Jedinou spolehlivou stopou pro identifikaci manipulace byly soubory lockfile (package-lock.json, pnpm-lock.yaml, yarn.lock) a přítomnost specifických verzí: axios 1.14.1 nebo 0.30.4 a plain-crypto-js 4.2.1, a dále dvě verze tohoto balíčku s mezilehlými čísly (4.2.0, 4.2.2) propojené v některých analýzách. Socket později zjistil, že stejný malware byl distribuován také prostřednictvím balíčků @shadanai/openclaw (různé verze 2026.3.xx) a @qqbrowser/openclaw-qbot (0.0.130), a bezpečnostní techniky, jako jsou honeypoty, mohou také pomoci identifikovat podobné kampaně.
Multiplatformní RAT: Windows, macOS a Linux v centru pozornosti
Po spuštění se skript setup.js fungoval jako orchestrátor schopný detekovat operační systém a sledovat útočnou cestu specifickou pro danou platformu . Kampaň byla evidentně předem připravená: podle StepSecurity měli útočníci předkompilované tři samostatné datové části, jednu pro každý systém.
V systémech macOS proces po instalaci spustil AppleScript, který stáhl binární soubor napadený trojským koněm ze serveru sfrclakcom:8000 . Tento binární soubor byl uložen do adresáře /Library/Caches/com.apple.act.mond, jeho oprávnění byla upravena tak, aby byl spustitelný, a nakonec byl spuštěn na pozadí pomocí /bin/zsh. Jakmile byl RAT spuštěn, samotný AppleScript byl smazán, což dále zkomplikovalo forenzní analýzu.
Na počítačích se systémem Windows malware lokalizoval binární soubor PowerShell systému, zkopíroval jej do souboru %PROGRAMDATA%\wt.exe, aby jej zamaskoval jako terminál systému Windows, a vygeneroval dočasný soubor VBScript . Tento soubor VBScript poté kontaktoval server C2, aby stáhl další skript PowerShell RAT, spustil jej a poté stažený soubor smazal. Varianta pro Windows dále vytvořila soubor %PROGRAMDATA%\system.bat s rutinou stahování, která umožňovala malwaru načíst se při každém přihlášení, a do registru systému Windows přidala spouštěcí klíč, aby zajistila jeho trvalost.
Na Linuxu a dalších unixových systémech kromě macOS dropper používal Node.js execSync ke spuštění příkazu shellu, který stáhl Python skript ze sfrclakcom, uložil jej jako /tmp/ld.py a spustil jej s příkazem nohup, aby běžel na pozadí . Na rozdíl od Windows tato varianta nevykazovala robustní mechanismus perzistence, což naznačuje rychlejší přístup zaměřený na exfiltraci dat nebo občasné nasazení perzistence prostřednictvím následných příkazů.
Společnosti SafeDep a Elastic Security Labs analyzovaly datové zátěže druhé úrovně a dospěly k závěru, že testy RAT pro macOS (binární soubor C++ Mach-O) a Linux (skript Python) sdílejí stejnou sadu příkazů, protokol C2, formát zpráv a provozní chování . Tento typ analýzy se obvykle spoléhá na skenovací služby, jako je VirusTotal , které usnadňují korelaci vzorků a IOC.
Ve všech případech každý napadený hostitel provedl okamžitou průzkum systému: uživatelské adresáře, kořenové adresáře disků, aktivní procesy a další metadata . Tyto informace byly odeslány na velitelský a řídicí server a agent udržoval smyčku beaconu po dobu přibližně 60 sekund, v níž čekal na nové instrukce, včetně spuštění dalších skriptů nebo vložení binárních souborů do paměti.
Okno expozice, cíle a připisování Severní Koreji
Škodlivé verze Axiosu byly na npm dostupné přibližně tři hodiny, během pečlivě zvoleného časového rámce. Napadené balíčky byly publikovány těsně před půlnocí v neděli (v době, která maximalizovala reakční dobu obránců) a incident byl zvládnut do časných pondělních ranních hodin poté, co bezpečnostní firmy upozornily úřady na anomální chování.
Během tohoto relativně krátkého období Huntress detekoval nejméně 135 systémů připojujících se k serveru útočníka . Vzhledem k tomu, že Axios zaznamenává více než 80–100 milionů stažení týdně (podle různých zdrojů v některých obdobích dokonce více než 300 milionů), toto číslo pravděpodobně představuje pouze špičku ledovce a je omezeno na systémy, které se dostaly do pozornosti analytických firem, jež zveřejnily svá data.
Google prostřednictvím svého týmu Threat Intelligence připsal útok podezřelému severokorejskému aktérovi s označením UNC1069 . Společnost Elastic Security Labs tuto hypotézu podpořila nalezením silné podobnosti mezi RAT poskytovaným v systému macOS a WAVESHAPEREM, backdoorem v jazyce C++, který objevila společnost Mandiant a který byl také spojen se stejnou skupinou hrozeb.
Analytici společnosti Google zdůraznili, že skupiny napojené na Severní Koreu se již léta specializují na útoky v dodavatelském řetězci a krádeže kryptoměn . Tento vzorec je konzistentní: ohrožení vývojové infrastruktury, široce používaných knihoven nebo důvěryhodného softwaru s následným přesunem k cílům, které spravují aktiva s vysokou hodnotou, soukromé klíče nebo přihlašovací údaje.
Několik zpráv rovněž zdůraznilo, že moderování a design útoku naznačovaly dobře koordinovaný tým : tři paralelní implementace stejného RAT (PowerShell, C++ a Python), konzistentní protokol C2, téměř identické chování napříč všemi variantami a jasná strategie samočištění, která zabraňuje zanechávání stop. Společnost Elastic zdůraznila, že tato konzistence ukazuje na jednoho vývojáře nebo skupinu pracující na sdíleném návrhovém dokumentu, daleko od improvizace.
Kromě čistě technických aspektů je jedním z nejvíce znepokojivých bodů případu způsob, jakým byl unesen npm účet hlavního správce. Sám manažer Axiosu později vysvětlil, že měl dvoufaktorové ověřování povolené téměř u všech svých služeb , a přesto nakonec přístup udělil, aniž by si to uvědomoval.
Podle analýzy po rozboru, kterou tým sdílel, útočníci provedli vysoce propracovanou operaci sociálního inženýrství, podporovanou nástroji s umělou inteligencí, aby si získali jejich důvěru . Vydávali se za zakladatele společnosti, kopírovali její vizuální identitu, fotografii a dokonce i firemní branding. Vytvořili skutečný Slack prostor s logem společnosti, kanály s příspěvky údajně synchronizovanými s LinkedIn a dokonce i falešné profily zaměstnanců a dalších správců open-source softwaru.
V tomto prostředí naplánovali schůzku prostřednictvím Microsoft Teams, které se zřejmě účastnila celá skupina profesionálů . Během schůzky simulovali technický problém a naznačili, že součást jejich systému je zastaralá. Technik údržby, v domnění, že se jedná o legitimní požadavek související se samotným nástrojem pro videokonference, stáhl a nainstaloval doporučený soubor.
Tento soubor byl ve skutečnosti trojským koněm pro vzdálený přístup, který útočníkům umožnil získat přístup k přihlašovacím údajům oběti a nakonec převzít kontrolu nad účtem npm použitým k publikování Axiosu . Celý proces byl tak dobře zorganizovaný a obsahoval tolik věrohodných detailů, že ho oběť popsala jako „dokonale koordinovaný, profesionální a naprosto přesvědčivý“.
Tento lidský prvek incidentu jasně ukazuje, že i technická opatření, jako je 2FA, jsou nedostatečná, pokud je sociální inženýrství na vysoké úrovni kombinováno s vizuální imitací, deepfaky nebo detailním klonováním organizací . Nejslabším článkem je opět lidská interakce.
Dopad na organizace a vývojáře používající Axios
Z praktického hlediska je hlavním problémem určení, kdo byl skutečně postižen. Každá organizace, která nainstalovala [email protected] nebo [email protected] v době, kdy byly dostupné, by měla předpokládat, že počítač nebo kanál, který instalaci provedl, mohl být ohrožen.
Doporučení firem jako StepSecurity, Aikido, Huntress a Elastic jsou jednoznačná. V případě podezření je nutný proaktivní přístup, nikoli pouze „smazání a přeinstalace node_modules “. Rozumným postupem je znovu sestavit postižené počítače nebo prostředí z důvěryhodných obrazů a pečlivě zkontrolovat protokoly CI/CD, abyste zjistili, které úlohy nebo kanály mohly spustit napadené verze.
Dále je zásadní rotovat všechny přihlašovací údaje a tajné údaje, ke kterým mohl RAT z těchto uzlů přistupovat : tokeny npm, klíče poskytovatele cloudu, tajné údaje pipeline, přihlašovací údaje k databázi, klíče SSH atd. Ponechání těchto přihlašovacích údajů v oběhu po takovém útoku otevírá dveře pro tichý laterální pohyb.
Na technické úrovni by týmy měly zkontrolovat své soubory zámků (package-lock.json, pnpm-lock.yaml, yarn.lock) a zjistit, zda neobsahují odkazy na kompromitované verze systémů Axios a plain-crypto-js . Pokud se tyto prvky najdou, dalším krokem je kontrola postižených systémů na přítomnost potenciálních artefaktů RAT: /Library/Caches/com.apple.act.mond v systému macOS, %PROGRAMDATA%\wt.exe a %PROGRAMDATA%\system.bat ve Windows nebo /tmp/ld.py v systému Linux.
Souběžně se doporučuje explicitně nastavit zabezpečené verze Axiosu, například 1.14.0 a 0.30.3, a používat přepsání nebo rozlišení, aby se zabránilo převodu tranzitivních závislostí na nežádoucí verze . Blokování odchozího provozu do domény sfrclakcom je také rozumným opatřením k omezení, alespoň dokud se analyzuje plný rozsah útoku.
Bezpečnostní lekce pro dodavatelský řetězec softwaru
Incident s Axiosem není ojedinělou událostí, ale dalším článkem v řetězci útoků na dodavatelský řetězec, který zahrnuje případy jako SolarWinds, Kaseya, 3CX, Polyfill.io a zranitelnosti zneužité v Log4j. Základní myšlenka je vždy stejná: kompromitovat široce používanou a důvěryhodnou komponentu, aby se maximalizoval dosah , spíše než se pokoušet útočit na jednotlivé stroje.
Jedním z nejčastěji opakovaných ponaučení od expertů je, že důvěra se nemůže spoléhat pouze na popularitu knihovny nebo reputaci správce . Pokud je kanál vydání (npm účet, CI/CD pipeline, infrastruktura sestavení) ohrožen, vše, co je jeho prostřednictvím vydáno, toto riziko zdědí. Ruční kontrola kódu je také nedostatečná, pokud se malware skrývá v tranzitivních závislostech a po spuštění se sám smaže.
Bylo také zdůrazněno, že „výchozí rychlost“ aktualizací závislostí má svou cenu z hlediska plochy útoku . Vždy automaticky přijímat nejnovější verzi je neuvěřitelně pohodlné, ale otevírá dveře pro šíření škodlivé aktualizace během několika minut. Některé organizace již zvažují zásady, jako je požadavek, aby nová verze byla v ekosystému po určitou dobu před přijetím, nebo požadavek, aby změny kritických balíčků prošly dodatečnou manuální kontrolou.
Pokud jde o vývojovou infrastrukturu, musí být prostředí CI/CD považována za vysoce citlivá aktiva . Jakýkoli RAT spuštěný během instalace závislostí bude téměř jistě vyhledávat tajné informace kanálu a přístup k jiným prostředím. Segmentace těchto uzlů, jejich bližší monitorování a pravidelná rotace jejich tajných informací již není „ideálním“ doporučením, ale nutností.
Detekce těchto typů útoků konečně vyžaduje kombinování informací z více zdrojů: nainstalovaných verzí, souborů zámků, indikátorů kompromitace operačního systému a síťové telemetrie . Nástroje, které generují a spravují seznamy materiálů softwaru (SBOM), pomáhají rychle sledovat, které projekty používají které balíčky, což je zásadní při spouštění masivních výstrah, jako je tato.
Celá tato epizoda s Axiosem ilustruje, do jaké míry se ekosystém závislostí, ať se zdá jakkoli zralý a konsolidovaný, stále silně spoléhá na důvěru a neustálou ostražitost. Zdánlivě neškodná knihovna, spravovaná jedinou osobou, která se stane obětí dobře provedeného útoku sociálního inženýrství, se může během několika hodin stát globálním vektorem pro nasazení multiplatformních RATů proti společnostem, freelancerům a organizacím všech velikostí . Posílení kontrol kolem publikačních účtů, pipelineů a kritických závislostí již není volitelným osvědčeným postupem, ale předpokladem pro další rozvoj v prostředí, kde jsou útočníci stále trpělivější, vynalézavější a vybaveni lepšími nástroji.

