- Uzbrucējs apdraudēja Axios galvenā uzturētāja npm kontu un izlaida 1.14.1 un 0.30.4 versijas ar fantoma atkarību plain-crypto-js, kas instalēšanas laikā izvietoja starpplatformu RAT.
- Ļaunprogrammatūra sazinājās ar C2 serveri (sfrclak[.]com) un lejupielādēja noteiktas vērtuma programmas operētājsistēmām Windows, macOS un Linux, veicot sistēmas izlūkošanu, periodiski uzturot bākugunis un dažos gadījumos nodrošinot noturību.
- Uzbrukums, ko Google un citi pētnieki piedēvē Ziemeļkorejas spēlētājam UNC1069, apvienoja aptuveni trīs stundu ilgu iedarbības periodu ar sarežģītu sociālās inženierijas kampaņu pret uzturētāju, lai nozagtu viņu akreditācijas datus.
- Organizācijām, kurām izdevās instalēt skartās versijas, ir jāapņemas veikt atbilstošas darbības, meklēt RAT artefaktus, mainīt akreditācijas datus, piespraust drošās Axios versijas un stiprināt piegādes ķēdes, CI/CD un atkarību pārvaldības kontroles.
JavaScript izstrādātāju kopiena nupat ir piedzīvojusi vienu no tām biedējošajām situācijām, kas liek pārdomāt, cik lielā mērā jūs uzticaties savām atkarībām, ko apliecina bibliotēku ievainojamības problēmas . Axios, viena no visplašāk izmantotajām HTTP bibliotēkām ekosistēmā, tika manipulēta npm, lai izplatītu attālās piekļuves Trojas zirgu (RAT), izmantojot šķietami likumīgas versijas. Incidents ilga tikai dažas stundas, taču tas ir skaidri parādījis, ka programmatūras piegādes ķēde karājas uz daudz plānāka pavediena, nekā daudzi domāja.
Nopietnā problēma nav tikai tā, ka uzbrucējiem izdevās ielavēt ļaunprogrammatūru pakotnē, kas tika lejupielādēta desmitiem vai simtiem miljonu reižu nedēļā. Īstā problēma ir tā, ka viņi to panāca, nolaupot galvenā uzturētāja npm kontu un publicējot "oficiālas" versijas, kas izskatījās normālas un nepieskārās nevienai Axios pirmkoda rindai . Visa ļaunprātīgā uzvedība atradās fantoma atkarībā, kas bija īpaši izstrādāta uzbrukumam.
Kā radās Axios apņemšanās ieviest npm
Lai izprastu incidenta apmēru, mums jāsāk ar ieejas punktu. Uzbrucējam izdevās pārņemt Axios galvenā uzturētāja “jasonsaayman” npm kontu un nomainīja saistīto e-pasta adresi uz tādu, kas atrodas viņa kontrolē un tiek mitināta Proton Mail. Kopš tā brīža viņiem bija pilnīga brīvība publicēt jaunas pakotnes versijas, it kā viņi būtu uzturētāji.
Izmantojot šos akreditācijas datus, viņš augšupielādēja divas ļaunprātīgas Axios versijas: 1.14.1 un 0.30.4 , aptverot abas galvenās projekta atzarus. Augšupielādes tika veiktas tikai ar 39 minūšu intervālu un, saskaņā ar StepSecurity analīzi, tika veiktas tieši no npm, izmantojot klasisku ilgtermiņa marķieri, pilnībā apejot parasto CI/CD cauruļvadu, kura pamatā ir GitHub Actions.
Astoņpadsmit stundas pirms pēdējā uzbrukuma dalībnieks jau bija publicējis "tīru" versiju, kas saistīta ar ļaunprātīgo atkarību npm reģistrā . Šis sākotnējais solis kalpoja vēstures ģenerēšanai un dažu automatizētu pārbaužu aktivizēšanas novēršanai, kad uzbrukuma laikā parādījās pilnīgi jauna pakotne.
Pārsteidzoši ir tas, ka uzbrucēji nemodificēja Axios pirmkodu un neveica nekādas redzamas izmaiņas GitHub repozitorijā . Faktiski versijām 1.14.1 un 0.30.4 nebija atbilstošu izmaiņu GitHub platformā; tās pastāvēja tikai npm platformā. Galvenā atšķirība bija pakotnes atkarības failā, kas tika publicēts reģistrā.
Normālos apstākļos Axios deklarē tikai trīs atkarības: follow-redirects, form-data un proxy-from-env . Tomēr kompromitētajās versijās parādījās ceturtā atkarība, kas iepriekš projektā nepastāvēja: plain-crypto-js, 4.2.1. versija. Šī fantoma bibliotēka netika izmantota nekur Axios koda bāzē, taču tajā bija iekļauts pēcinstalēšanas skripts, kas automātiski darbojās, instalējot pakotni ar npm, pnpm vai līdzīgiem rīkiem.
plain-crypto-js: RAT izvietotā fantoma atkarība
Uzbrukuma atslēga slēpās šajā papildu atkarībā. plain-crypto-js publicēja npm lietotājs ar vārdu “nrwise”, kuram arī bija Proton Mail e-pasta adrese, un tā vienīgais mērķis bija izpildīt apslēptu pēcinstalēšanas skriptu Node.js (setup.js) . Šis skripts darbojās kā nomestājs, tas ir, kā sākotnējais ļaunprogrammatūras otrās fāzes instalētājs.
Instalējot Axios vienā no tā bojātajām versijām, npm pēcinstalēšanas dzīves cikls automātiski aktivizēja plain-crypto-js kodu bez jebkādas īpašas izstrādātāja darbības . Dropper izveidoja savienojumu ar komandu un vadības (C2) serveri, kas ir aktīvs sfrclakcom domēnā, klausoties 8000. portā, un lejupielādēja skartās iekārtas operētājsistēmai specifisku vērtumu; šo uzvedību var noteikt, analizējot tīkla datplūsmu.
StepSecurity un citu analīzes komandu pētnieki apraksta ļoti piesardzīgu rīcību. Pēc ļaunprātīgās slodzes izpildes droppers noņēma savas pēdas: tas izdzēsa pēcinstalēšanas skriptu, aizstāja package.json failu ar "tīru" versiju un atstāja node_modules failu, kas no pirmā acu uzmetiena šķita nekaitīgs . Tādā veidā turpmākā manuālā pārbaude neatrada ļaunprātīgo kodu tieši Axios iekšienē.
Lai identificētu manipulāciju, vienīgā uzticamā norāde bija bloķēšanas failos (package-lock.json, pnpm-lock.yaml, yarn.lock) un konkrētu versiju klātbūtnē: axios 1.14.1 vai 0.30.4 un plain-crypto-js 4.2.1, kā arī divās šīs pakotnes versijās ar starpposma numuriem (4.2.0, 4.2.2), kas dažās analīzēs ir saistītas. Savukārt Socket vēlāk atklāja, ka tā pati ļaunprogrammatūra tika izplatīta arī caur pakotnēm @shadanai/openclaw (dažādas versijas 2026.3.xx) un @qqbrowser/openclaw-qbot (0.0.130), un drošības metodes, piemēram, honeypots, var arī palīdzēt identificēt līdzīgas kampaņas.
Starpplatformu RAT: uzmanības centrā Windows, macOS un Linux
Kad setup.js skripts bija izpildīts, tas darbojās kā orķestrētājs, kas spēja noteikt operētājsistēmu un sekot platformai specifiskam uzbrukuma ceļam . Kampaņa bija nepārprotami iepriekš sagatavota: saskaņā ar StepSecurity datiem uzbrucējiem bija iepriekš kompilēti trīs atsevišķi vērtumi, pa vienam katrai sistēmai.
macOS sistēmās pēcinstalēšanas process palaida AppleScript failu, kas no sfrclakcom:8000 servera lejupielādēja Trojas zirga bināro failu . Šis binārais fails tika saglabāts ceļā /Library/Caches/com.apple.act.mond, tā atļaujas tika pielāgotas, lai padarītu to izpildāmu, un visbeidzot tas tika palaists fonā, izmantojot /bin/zsh. Kad RAT bija darbojies, pats AppleScript fails tika izdzēsts, lai vēl vairāk sarežģītu kriminālistisko analīzi.
Windows datoros ļaunprogrammatūra atrada sistēmas PowerShell bināro failu, nokopēja to failā %PROGRAMDATA%\wt.exe, lai maskētu to kā Windows termināli, un ģenerēja pagaidu VBScript failu . Šis VBScript fails pēc tam sazinājās ar C2 serveri, lai lejupielādētu papildu PowerShell RAT skriptu, izpildīja to un pēc tam izdzēsa lejupielādēto failu. Turklāt Windows variants izveidoja failu %PROGRAMDATA%\system.bat ar lejupielādes rutīnu, kas ļāva ļaunprogrammatūrai izgūt sevi katrā pieteikšanās reizē un pievienoja Windows reģistram izpildes atslēgu, lai nodrošinātu noturību.
Linux un citās Unix līdzīgās sistēmās, izņemot macOS, droppers izmantoja Node.js execSync, lai palaistu čaulas komandu, kas lejupielādēja Python skriptu no sfrclakcom, saglabāja to kā /tmp/ld.py un izpildīja to ar nohup, lai tas darbotos fonā . Atšķirībā no Windows, šim variantam nebija spēcīga saglabāšanas mehānisma, kas liecina par ātrāku uz datu eksfiltrāciju orientētu pieeju vai saglabāšanas neregulāru ieviešanu, izmantojot secīgas komandas.
SafeDep un Elastic Security Labs analizēja otrā līmeņa vērtumus un secināja, ka RAT komandām macOS (C++ Mach-O binārais fails) un Linux (Python skripts) bija vienāds komandu kopums, C2 protokols, ziņojumu formāts un darbības uzvedība . Šāda veida analīze parasti balstās uz skenēšanas pakalpojumiem, piemēram, VirusTotal , kas atvieglo paraugu un IOC korelāciju.
Visos gadījumos katrs kompromitētais resursdators nekavējoties veica sistēmas izlūkošanu: lietotāju direktorijus, disku saknes, aktīvos procesus un citus metadatus . Šī informācija tika nosūtīta uz komandu un vadības serveri, un aģents uzturēja aptuveni 60 sekunžu ilgu bākuguns cilpu, gaidot jaunas instrukcijas, tostarp papildu skriptu izpildi vai bināro failu ievadīšanu atmiņā.
Iedarbības periods, mērķi un attiecinājums uz Ziemeļkoreju
Ļaunprātīgās Axios versijas bija pieejamas npm aptuveni trīs stundas, rūpīgi izvēlētā laika posmā. Apdraudētās pakotnes tika publicētas tieši pirms svētdienas pusnakts (laikā, kas maksimāli palielināja aizstāvju reakcijas laiku), un incidents tika ierobežots līdz pirmdienas rītam pēc tam, kad drošības firmas brīdināja varas iestādes par anomālo uzvedību.
Šajā relatīvi īsajā laika posmā Huntress atklāja vismaz 135 sistēmas, kas pieslēdzās uzbrucēja serverim . Ņemot vērā, ka Axios reģistrē vairāk nekā 80–100 miljonus lejupielāžu nedēļā (saskaņā ar dažādiem avotiem, dažos periodos pat vairāk nekā 300 miljonus), šis skaitlis, visticamāk, ir tikai aisberga redzamā daļa, kas attiecas tikai uz sistēmām, kuras nonāk analītikas uzņēmumu uzmanības lokā, kuri ir publiskojuši savus datus.
Google ar savas Draudu izlūkošanas komandas starpniecību uzbrukumu attiecināja uz iespējamu Ziemeļkorejas dalībnieku ar apzīmējumu UNC1069 . Elastic Security Labs apstiprināja šo hipotēzi, atrodot spēcīgu līdzību starp macOS instalēto RAT un WAVESHAPER — C++ aizmugurējo durvju rīku, ko atklāja Mandiant un kas arī ir saistīts ar to pašu apdraudējumu grupu.
Google analītiķi uzsvēra, ka ar Ziemeļkoreju saistītas grupas jau gadiem ilgi specializējas piegādes ķēdes uzbrukumos un kriptovalūtas zādzībās . Šī tendence ir konsekventa: tiek apdraudēta izstrādes infrastruktūra, plaši izmantotas bibliotēkas vai uzticama programmatūra, lai pēc tam virzītos uz mērķiem, kas pārvalda augstas vērtības aktīvus, privātās atslēgas vai akreditācijas datus.
Vairākos ziņojumos arī tika uzsvērts, ka uzbrukuma moderācija un dizains liecināja par labi koordinētu komandu : trīs paralēlas viena un tā paša RAT implementācijas (PowerShell, C++ un Python), konsekvents C2 protokols, gandrīz identiska uzvedība visos variantos un skaidra pašattīrīšanās stratēģija, lai izvairītos no pēdu atstāšanas. Elastic uzsvēra, ka šī konsekvence norāda uz vienu izstrādātāju vai grupu, kas strādā ar kopīgu dizaina dokumentu, nevis improvizāciju.
Papildus tīri tehniskajiem aspektiem, viens no satraucošākajiem lietas punktiem ir tas, kā tika nolaupīts galvenā uzturētāja npm konts. Pats Axios vadītājs vēlāk paskaidroja, ka gandrīz visos viņa pakalpojumos bija iespējota divfaktoru autentifikācija , tomēr viņš galu galā piešķīra piekļuvi, to neapzinoties.
Saskaņā ar komandas sniegto pēcnāves analīzi uzbrucēji veica ļoti sarežģītu sociālās inženierijas operāciju, ko atbalstīja mākslīgā intelekta rīki, lai iegūtu viņu uzticību . Viņi uzdevās par uzņēmuma dibinātāju, kopējot tā vizuālo identitāti, fotogrāfiju un pat korporatīvo zīmolu. Viņi izveidoja īstu Slack telpu ar uzņēmuma logotipu, kanālus ar ierakstiem, kas it kā sinhronizēti ar LinkedIn, un pat viltotus darbinieku un citu atvērtā pirmkoda programmatūras uzturētāju profilus.
Šajā vidē viņi, izmantojot Microsoft Teams, ieplānoja sanāksmi, kurā, šķiet, piedalījās pilna profesionāļu grupa . Sanāksmes laikā viņi simulēja tehnisku problēmu un norādīja, ka kāda viņu sistēmas sastāvdaļa ir novecojusi. Apkopes tehniķis, pieņemot, ka tā ir likumīga prasība, kas saistīta ar pašu videokonferenču rīku, lejupielādēja un instalēja ieteikto failu.
Šis fails patiesībā bija attālās piekļuves Trojas zirgs, kas ļāva uzbrucējiem pāriet uz upura akreditācijas datiem un galu galā pārņemt kontroli pār npm kontu, kas tika izmantots Axios publicēšanai . Viss process bija tik labi organizēts, ar tik daudzām ticamām detaļām, ka upuris to raksturoja kā "perfekti koordinētu, profesionālu un pilnīgi pārliecinošu".
Šis incidenta cilvēciskais elements skaidri parāda, ka pat tādi tehniski pasākumi kā divfaktoru autentifikācija (2FA) ir nepietiekami, ja augsta līmeņa sociālā inženierija tiek apvienota ar vizuālu personības atdarināšanu, dziļviltojumiem vai detalizētu organizāciju klonēšanu . Vājākais posms atkal ir cilvēka mijiedarbība.
Ietekme uz organizācijām un izstrādātājiem, kas izmanto Axios
No praktiskā viedokļa galvenā problēma ir noteikt, kurš faktiski tika ietekmēts. Jebkurai organizācijai, kas instalēja [email protected] vai [email protected] laikā, kad tie bija pieejami, jāpieņem, ka iekārta vai cauruļvads, kas veica instalēšanu, var būt apdraudēts.
Tādu uzņēmumu kā StepSecurity, Aikido, Huntress un Elastic ieteikumi ir nepārprotami. Aizdomu gadījumā ir nepieciešama proaktīva pieeja, nevis vienkārši "node_modules dzēšana un atkārtota instalēšana ". Apdomīga rīcība ir atjaunot skartās mašīnas vai vides no uzticamiem attēliem un rūpīgi pārskatīt CI/CD žurnālus, lai noteiktu, kuri darbi vai cauruļvadi, iespējams, ir izpildījuši apdraudētās versijas.
Turklāt ir ļoti svarīgi mainīt visus akreditācijas datus un noslēpumus, kuriem RAT varētu būt piekļuvis no šiem mezgliem : npm žetoni, mākoņpakalpojumu sniedzēju atslēgas, cauruļvada noslēpumi, datubāzes akreditācijas dati, SSH atslēgas utt. Atstājot šos akreditācijas datus apgrozībā pēc šāda uzbrukuma, rodas iespēja klusai sānu kustībai.
Tehniskā līmenī komandām ir jāpārskata savi bloķēšanas faili (package-lock.json, pnpm-lock.yaml, yarn.lock), lai atrastu atsauces uz apdraudētajām Axios un plain-crypto-js versijām . Ja šie elementi tiek atrasti, nākamais solis ir pārbaudīt skartās sistēmas, lai atrastu potenciālus RAT artefaktus: /Library/Caches/com.apple.act.mond operētājsistēmā macOS, %PROGRAMDATA%\wt.exe un %PROGRAMDATA%\system.bat operētājsistēmā Windows vai /tmp/ld.py operētājsistēmā Linux.
Vienlaikus ieteicams skaidri iestatīt drošas Axios versijas, piemēram, 1.14.0 un 0.30.3, un izmantot ignorēšanas vai atrisināšanas metodes, lai novērstu tranzitīvu atkarību pārvēršanos nevēlamās versijās . Izejošās datplūsmas bloķēšana uz sfrclakcom domēnu ir arī saprātīgs ierobežošanas pasākums, vismaz laikā, kamēr tiek analizēts pilns uzbrukuma apjoms.
Drošības mācības programmatūras piegādes ķēdei
Axios incidents nav atsevišķs notikums, bet gan vēl viens posms piegādes ķēdes uzbrukumu ķēdē, kas ietver tādus gadījumus kā SolarWinds, Kaseya, 3CX, Polyfill.io un Log4j izmantotās ievainojamības. Galvenā ideja vienmēr ir viena un tā pati: apdraudēt plaši izmantotu, uzticamu komponentu, lai maksimāli palielinātu sasniedzamību , nevis mēģināt uzbrukt katrai mašīnai atsevišķi.
Viena no ekspertu visbiežāk atkārtotajām mācībām ir tāda, ka uzticēšanās nevar balstīties tikai uz bibliotēkas popularitāti vai uzturētāja reputāciju . Ja izlaišanas kanāls (npm konts, CI/CD cauruļvads, būvēšanas infrastruktūra) tiek apdraudēts, viss, kas tiek izlaists caur to, pārmanto šo risku. Manuāla koda pārskatīšana arī nav pietiekama, ja ļaunprogrammatūra slēpjas tranzitīvās atkarībās un pēc izpildes pati sevi izdzēš.
Ir arī uzsvērts, ka atkarīgo atjauninājumu "noklusējuma ātrums" rada izmaksas uzbrukuma virsmas ziņā . Vienmēr automātiski ieviest jaunāko versiju ir neticami ērti, taču tas paver durvis ļaunprātīga atjauninājuma izplatībai dažu minūšu laikā. Dažas organizācijas jau apsver tādas politikas kā prasība, lai jaunā versija pirms ieviešanas būtu atradusies ekosistēmā noteiktu laiku, vai prasība, lai kritisko pakotņu izmaiņas tiktu pakļautas papildu manuālai pārskatīšanai.
Attiecībā uz izstrādes infrastruktūru CI/CD vides ir jāuzskata par ļoti sensitīviem resursiem . Jebkura RAT, kas tiek izpildīta atkarību instalēšanas laikā, gandrīz noteikti meklēs cauruļvada noslēpumus un piekļuvi citām vidēm. Šo mezglu segmentēšana, rūpīgāka uzraudzība un periodiska to noslēpumu rotācija vairs nav "ideāls" ieteikums, bet gan nepieciešamība.
Visbeidzot, šāda veida uzbrukumu atklāšanai ir jāapvieno informācija no vairākiem avotiem: instalētajām versijām, bloķēšanas failiem, operētājsistēmas kompromitēšanas indikatoriem un tīkla telemetrijas . Rīki, kas ģenerē un pārvalda programmatūras materiālu sarakstus (SBOM), palīdz ātri izsekot, kuri projekti izmanto kuras pakotnes, kas ir ļoti svarīgi, kad tiek aktivizēti šādi lieli brīdinājumi.
Visa šī epizode ar Axios ilustrē to, cik lielā mērā atkarību ekosistēma, lai cik nobriedusi un konsolidēta tā šķistu, joprojām lielā mērā balstās uz uzticēšanos un pastāvīgu modrību. Šķietami nekaitīga bibliotēka, ko uztur viena persona, kas kļūst par labi īstenota sociālās inženierijas uzbrukuma upuri, dažu stundu laikā var kļūt par globālu vektoru starpplatformu RAT izvietošanai pret uzņēmumiem, ārštata darbiniekiem un visu lielumu organizācijām . Kontroles stiprināšana attiecībā uz publicēšanas kontiem, cauruļvadiem un kritiskajām atkarībām vairs nav izvēles labākā prakse, bet gan priekšnoteikums turpmākai attīstībai vidē, kurā uzbrucēji ir arvien pacietīgāki, atjautīgāki un aprīkoti ar labākiem rīkiem.

