drošība · 4 min · 22.07.2026

AsyncAPI npm pakotnes izplata Miasma RAT — uzbrucējs pievāca projekta paša GitHub Actions plūsmu

14. jūlijā plkst. 07:10 pēc UTC npm reģistrā parādījās @asyncapi/generator versija 3.3.1. Pakotnei bija derīga npm OIDC izcelsmes atzīme, jo to publicēja pati AsyncAPI projekta GitHub Actions plūsma. Uzbrucējam nevajadzēja nozagt nevienu npm marķieri. Viņš bija ieguvis rakstīšanas tiesības uz repozitorija next zaru un ļāva projekta īstajai CI/CD plūsmai izdarīt publicēšanu.

Tajā pašā rītā npm nokļuva piecas ļaunas versijas: @asyncapi/generator@3.3.1, @asyncapi/generator-helpers@1.1.1, @asyncapi/generator-components@0.7.1 un @asyncapi/specs versijas 6.11.2 un 6.11.2-alpha.1. Kods aktivizējas brīdī, kad Node.js ielādē moduli, nevis instalēšanas laikā, tāpēc datorā pietika ar parastu npm ci, lai palaistu pilinātāju. @asyncapi/specs vien saņem 2,66 miljonus lejupielāžu nedēļā un to tālāk velk @asyncapi/parser (970 tūkstoši nedēļā). Kombinētais skaits pārsniedz 2,9 miljonus lejupielāžu nedēļā.

Kā uzbrucējs iekļuva plūsmā

Uzbrukums sākās ar 37 pull request pieprasījumiem AsyncAPI generator repozitorijam. Gandrīz visi pievienoja viltus ziedojumu lapu un kalpoja par troksni. Viens pieprasījums izmantoja nepareizi konfigurētu GitHub Actions darbplūsmu, kas palaidās ar pull_request_target trigeri un darbā paņēma paša pieprasījuma kodu, nevis bāzes zaru. Šāda darbplūsma piekļūst repozitorija noslēpumiem. Tādu paņēmienu sauc par pwn request. Tieši tā uzbrucējs izvilka augsti privileģētu personīgo piekļuves marķieri (PAT).

Ar šo marķieri viņš varēja rakstīt tieši aizsargātajos zaros. Commit tika iesniegts ar vietturi Your Name <you@example.com> un GitHub lietotājvārdu invalid-email-address. Push uz next zaru pēc 12 sekundēm palaida darbplūsmu release-with-changesets.yml. Tā caur npm OIDC uzticamo publicētāju izlaida pakotnes ar derīgām SLSA izcelsmes atzīmēm. Ievainojamību jau aprīlī bija demonstrējusi pētniece Florence Njeri ar koncepta pierādījumu, tomēr labojums nepienāca.

Derīga izcelsmes atzīme apliecina, no kurienes pakotne nāca, nevis to, ka tās saturs ir drošs. Šoreiz tā nāca no īstās plūsmas ar ļaunu commit.

Ko dara Miasma RAT

Ielādētais modulis lejupielādē otrās pakāpes slodzi sync.js no IPFS un uzstāda Miasma RAT. Analītiķu izpakotais Node.js komplekts ir 3,08 MB liels un satur 744 moduļus. Vākšanas mērķi ir SSH atslēgas, npm, GitHub un PyPI marķieri, AWS akreditācijas dati, pārlūku paroles, macOS atslēgu saišķis, Docker akreditācijas dati un kubectl konfigurācija.

Vadību Miasma uztur pa sešiem kanāliem: HTTP, Nostr releji, IPFS, BitTorrent DHT, libp2p GossipSub tīkls un Ethereum viedlīgums kā slēptā pastkaste. Ir arī modulis, ko StepSecurity sauc par AI rīku saindētāju: tas mēģina iepludināt kodu Claude Code, GitHub Copilot un Cursor sesijās. Tāpēc inficētā datorā par apdraudētām jāuzskata arī AI kodēšanas sesijas.

Laika grafiks 14. jūlijā (UTC)

  • 06:58: ļauns commit uz generator next zaru
  • 07:10: trīs generator pakotnes publicētas caur GitHub OIDC
  • 07:56: sākas otrs uzbrukums spec-json-schemas master zaram
  • 08:06: publicēta alpha versija
  • 08:30: izlaista pēdējā specs pakotne
  • no 11:12 līdz 11:18: visas piecas versijas noņemtas no npm

Ko darīt tagad

Pakotnes no npm ir noņemtas, tāpēc jauna instalēšana ir droša. Problēma paliek projektiem, kuru lock faili tapa divu līdz četru stundu logā 14. jūlijā. StepSecurity iesaka izdzēst un pārģenerēt package-lock.json, yarn.lock vai pnpm-lock.yaml, nomainīt visus akreditācijas datus (npm marķierus, GitHub PAT, SSH atslēgas, AWS datus, pārlūku paroles) un pārbaudīt būves žurnālus, vai nav savienojumu ar ipfs.io, C2 adresēm vai DHT mezgliem. Drošās versijas ir generator 3.3.0, generator-helpers 1.1.0, generator-components 0.7.0 un specs 6.11.1.

Kompromitēto pakotņu atklāšanā piedalījās StepSecurity, SafeDep, Socket un OX Security. Microsoft artefaktus izseko ar nosaukumiem MiasmStealer un Supychain.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie