- Daan-daang npm packages ang nakompromiso ng isang self-replicating worm na tinatawag na Shai-Hulud, kung saan ang GitHub ay nag-alis ng 500+ tainted na bersyon.
- Ang malware ay nagnanakaw ng mga lihim (npm token, GitHub PAT, cloud key) at muling nag-publish ng mga nahawaang package gamit ang mga karapatan sa pag-publish ng mga biktima.
- Tinutukoy ng mga ebidensya ang pag-target sa Linux at macOS, pag-abuso sa TruffleHog, at isang daloy ng trabaho ng Mga Pagkilos sa GitHub na naglalabas ng data.
- Mga agarang hakbang: i-rotate ang mga token, audit dependencies at GitHub repos, ipatupad ang MFA/2FA, at maghanap ng mga IoC kabilang ang bundle.js at webhook.site traffic.

Ang nagsimula bilang isa pang supply-chain scare sa mundo ng JavaScript ay umakyat sa isang malaking insidente na nakakaapekto sa npm ecosystem. Kinukumpirma ng mga ulat sa maraming pinagmumulan ang isang nagpapalaganap na malware strain, sinusubaybayan bilang Shai‑Hulud, na ikokompromiso ang mga kredensyal ng developer, inilalantad ang code, at muling nag-publish ng mga bahid na pakete upang mapanatili ang impeksyon.
Bagama't magkakaiba ang mga bilang ayon sa pinagmulan, malinaw ang pinagkasunduan: pinag-uusapan natin daan-daang mga nakalalasong paglabas, kabilang ang isang malawakang ginagamit na library na dina-download ng milyun-milyong beses bawat linggo. Inalis ng GitHub ang mahigit 500 nakompromisong bersyon upang pigilan ang pagkalat, at hinihimok ng mga security team sa buong mundo ang mga developer na paikutin ang mga kredensyal at suklayin ang kanilang mga repo at pipeline para sa mga pahiwatig ng panghihimasok.
Ano ang nangyari at bakit ito mahalaga
Ang mga pagsisiyasat ay nagpapahiwatig na ang operasyon ay malamang na nagsimula sa credential-harvesting lures spoofing npm, hinihikayat ang mga maintainer na "i-update" ang mga setting ng MFA. May access sa kamay, ang threat actor ay nag-deploy ng worm na tumatakbo pagkatapos ng pag-install, naghahanap ng mga lihim, at muling nag-publish ng mga nahawaang build sa ilalim ng pagkakakilanlan ng biktima—na ginagawang mga pinagkakatiwalaang maintainer na mga amplifier ng pag-atake.
Pinagsasama ni Shai‑Hulud ang dalawang mapanganib na ideya: awtomatikong pagpapalaganap at pagnanakaw ng mga lihim. Inaabuso nito ang mga ninakaw na npm token upang mag-publish ng mga bagong bersyon ng mga pakete at ginagamit ang mga token ng GitHub at cloud key (AWS, GCP, Azure) upang ilipat sa gilid at i-exfiltrate ang data. Ang pagpapares na ito ay nagpapalakas sa blast radius, na nagbibigay-daan sa isang kompromiso na magkagulo sa hindi mabilang na mga user sa ibaba ng agos.
Lumilitaw na nakahilig ang mga target patungo sa mga sistemang katulad ng Unix. Isinasaad ng pagsusuri na karamihan ang malisyosong lohika ay isinasagawa sa Linux at macOS, batay sa mga pagsusuri sa kapaligiran, kahit na ang yugto ng pagtuklas ng mga lihim (kapansin-pansin sa TruffleHog) ay maaaring mangyari nang mas malawak. Ang pagtutok na iyon ay nagpaliit sa bakas ng paa ng uod ngunit nag-iwan pa rin ng malawak na hanay ng mga developer machine na nakalantad.
Ang mga pakete mula sa ilang kilalang organisasyon ay naapektuhan kasama ng mga sikat na module ng komunidad. Sa isang high-profile na halimbawa, ang @ctrl/tinycolor package—na-download ng milyun-milyong beses linggu-linggo—ay hinila sa away, na nagpapakita kung gaano kalalim ang impeksiyon na maaaring bumaon sa dependency graph.
Paano gumagana ang uod (technical breakdown)
Ang pangunahing payload ay ipinapadala bilang isang mabigat na JavaScript file, na karaniwang pinangalanan bundle.js (higit sa 3 MB sa mga naobserbahang sample). Isinasagawa ito sa pamamagitan ng postinstall hook na idinagdag sa package.json, na nangangahulugang awtomatikong tumatakbo ang malisyosong code pagkatapos ma-install ng user ang package mula sa npm.
Sa loob ng bundle.js ay mga module para sa Interaksyon ng GitHub API, mga cloud SDK (AWS/GCP), mga katulong sa networking, at mga gawain upang patakbuhin ang TruffleHog para sa lihim na pagtuklas. Iniimbentaryo ng script ang OS, hinahanap ang isang npm token, at sinusuri ang isang wastong token ng GitHub; kung walang matagpuan, piyansa ito—kung hindi man ay magsisimula ito ng exfiltration at replication.
Isang kapansin-pansing kakaiba: ang ilang mga nahawaang pakete ay naglalaman ng isang archive na pinangalanan package.tar sa halip na ang karaniwang kombensyon ng pagbibigay ng pangalan, isang salaysay na nakatulong sa mga mananaliksik na i-flag ang mga nakompromisong artifact. Naobserbahan din ng mga analyst ang isang variant na ginawa bilang isang preinstall hook; isang maagang kaso na binanggit ay ngx‑bootstrap 18.1.4, na maaaring nagsilbing paunang beachhead sa pagkalat.
Sa sandaling tumakbo, binibilang ng malware ang mga pinakana-download na package ng developer sa pamamagitan ng npm search API, binubuksan ang bawat tarball, ibinabagsak ang bundle.js, nag-iniksyon ng postinstall na command, na-bump ang bersyon, at muling nag-publish sa npm gamit ang token ng biktima. Ginagawa nitong sasakyan ang portfolio ng developer para sa karagdagang mga impeksyon.
Exfiltration ng mga lihim at mga workflow ng GitHub
Para sa pag-aani ng kredensyal, nag-scan si Shai‑Hulud para sa mga npm token, GitHub Personal Access Token, at cloud API key (AWS, GCP, Azure). Pagkatapos ay gagawa ito ng pampublikong repo ng GitHub na pinangalanang 'Shai‑Hulud' sa ilalim ng account ng biktima, na gumagawa ng data file (hal., data.json) na may mga ninakaw na lihim—epektibong inilalantad ang mga ito sa mundo.
Kasabay nito, napansin ng mga mananaliksik ang isang tusong anggulo ng GitHub Actions: ang uod gumagawa ng sangay na pinangalanang 'shai‑hulud' sa mga naa-access na repository at nagtutulak ng workflow file (shai‑hulud‑workflow.yml). Na-trigger sa mga push, ang daloy ng trabaho ay nangongolekta ng mga lihim at ipinapadala ang mga ito sa imprastraktura ng umaatake, minsan pagkatapos dobleng Base64 encoding para i-obfuscate ang content sa transit.
Mayroon ding ebidensya ng isang migration script na mga clone pribado/Internal na repo mula sa mga organisasyong maa-access ng biktima, muling i-host ang mga ito sa account ng user bilang pampublikong salamin. Ang layunin ay tila awtomatikong pagnanakaw ng source-code mula sa mga pribadong proyekto, na nagpapataas ng presyon sa mga apektadong organisasyon.
Maraming ulat ang nagpapansin ng mga artifact ng tulong sa AI sa loob ng mga bash script (mga komento at maging mga emoji), na nagmumungkahi na ang umaatake ay maaaring gumamit ng LLM para mapabilis ang pag-unlad ng mga bahagi ng automation ng malware.
Saklaw at kapansin-pansing mga pakete
Sa mga pinagsama-samang pagtanggal, inalis ang GitHub 500+ nakompromisong bersyon para masira ang pagpaparami ng uod. Habang ang eksaktong kabuuan ay patuloy na nagbabago, ang listahan ay sumasaklaw sa maraming ecosystem at org, na may downstream na epekto sa mga developer na nag-update sa panahon ng aktibong window.
Kabilang sa mga madalas na binanggit na mga pakete at namespace: @ctrl/tinycolor (milyong lingguhang pag-download), marami @crowdstrike/* mga bahagi (tulad ng commitlint at UI library), at isang malawak na hanay ng mga module ng komunidad kabilang ang ngx‑bootstrap, ng2‑file‑upload, ngx‑toastr, at higit pa. Ipinahiwatig ng CrowdStrike na ang pangunahing platform nito ay nanatiling hindi naapektuhan at iyon agad na inikot ang mga susi pagkatapos makakita ng mga malisyosong entry sa pampublikong rehistro.
- Mga halimbawang nakatali sa alon: @ctrl/tinycolor; @crowdstrike/commitlint; @crowdstrike/foundry‑js; @crowdstrike/glide‑core; ngx‑bootstrap; ng2‑file‑upload; ngx‑toastr; @nativescript‑community/*; @teselagen/*; @things‑factory/*; at iba pa.
- Nakita din ng mga mananaliksik maramihang nakakahamak na bersyon sa bawat pakete sa ilang mga kaso—malamang dahil sa kumakalat na uod sa pamamagitan ng ilang account ng mga maintainer sa loob ng parehong proyekto.
Ang pagtugon sa platform at mga pagbabago sa seguridad
Kasama ang mga agarang pagkilos ng GitHub paglilinis ng mga kilalang masasamang pakete mula sa npm at pagharang ng mga pag-upload na tumutugma sa Mga Indicator ng Pagkompromiso (IoCs). Ang kumpanya ay naglulunsad din ng mas mahigpit na mga kontrol sa pag-publish: mandatoryong 2FA para sa lokal na pag-publish, mas maikling buhay na mga butil na token (hal., pitong araw), at mas malawak na paggamit ng Pinagkakatiwalaang Publishing upang mabawasan ang pag-asa sa mga matagal nang lihim.
Ihihinto ng mga paparating na pagbabago ang mga legacy na classic na token at 2FA na nakabatay sa TOTP para sa pag-publish, default na huwag payagan ang pag-publish ng token, at palawakin ang mga provider para sa Trusted Publishing. Naghudyat ang GitHub ng unti-unting paglulunsad na may mga gabay sa dokumentasyon at paglipat, na kinikilala na ang ilang mga daloy ng trabaho ay mangangailangan ng pagsasaayos.
Ang mga team ng pagbabanta sa intel at incident-response sa buong industriya (kabilang ang Unit 42, Kaspersky, Trend Micro, at iba pa) ay may nagbigay ng patnubay at pagtuklas habang nagbabahagi ng mga IoC sa mga kapantay at alyansa para mapabilis ang mga update sa proteksyon.
Paano bawasan ang panganib sa ngayon
Gumalaw nang mabilis sa ilalim ng pagpapalagay na ang anumang developer machine na nag-install ng mga npm package kamakailan ay maaaring may nag-leak na mga lihim. Ang priority ay ang naglalaman ng pang-aabuso sa mga kredensyal, ihinto ang pagtitiyaga, at alisin ang mga nabubulok na dependency mula sa mga build chain.
- I-rotate agad ang mga npm token, GitHub PATs/SSH key, at cloud credential (AWS/GCP/Azure); isaalang-alang ang lahat ng mga lihim na naroroon sa mga host ng developer na nakompromiso.
- Audit dependencies sa pamamagitan ng package‑lock.json/yarn.lock; alisin o i-pin ang layo mula sa mga kilalang nakompromisong bersyon; muling i-install mula sa malinis na mapagkukunan.
- Ipatupad ang MFA/2FA sa buong GitHub at npm; lumipat sa Trusted Publishing kung saan posible upang alisin ang mga pangmatagalang token mula sa loop.
- Suriin ang GitHub para sa mga hindi inaasahang pampublikong repo na pinangalanang 'Shai‑Hulud', mga hindi pamilyar na sangay o daloy ng trabaho, at maanomalyang pagtakbo ng Mga Aksyon.
- Patigasin ang CI/CD na may pinakamababang pribilehiyong RBAC, artifact signing/verification, at tuloy-tuloy na SCA scanning; gamutin pagkonsumo ng open-source bilang pinamamahalaang panganib.
Mga tip sa pangangaso ng pagbabanta (mga pagsusuri sa mataas na signal)
Maghanap ng mga papalabas na koneksyon sa webhook.site mga domain, partikular ang URI na naobserbahan sa maraming ulat. Sa mga endpoint, hanapin ang presensya ng bundle.js sa pansamantalang o mga direktoryo ng package at para sa isang GitHub Actions file na pinangalanan shai‑hulud‑workflow.yml.
- Telemetry ng network: Mga log ng DNS/URL na naglalaman ng webhook.site; i-flag ang partikular na landas bb8ca5f6‑4175‑45d2‑b042‑fc9ebb8170b7 kung nakita.
- File telemetry: paggawa o pagpapatupad ng bundle.js; ang pagkakaroon ng shai‑hulud‑workflow.yml sa mga host ng developer ng Linux/macOS.
- Prosesong telemetry: TruffleHog invocations kung saan hindi inaasahan (tandaan ang lehitimong paggamit ay maaaring umiiral sa ilang mga organisasyon).
Mga tagapagpahiwatig ng kompromiso (IoCs)
Kasama sa mga file at string clues na makikita sa mga pagsisiyasat bundle.js at shai‑hulud‑workflow.yml, na may literal na string na 'shai‑hulud' na lumalabas sa mga sanga, repo, at daloy ng trabaho.
- Mga file: bundle.js; shai‑hulud‑workflow.yml
- Strings: shai‑hulud; package.tar
- Hashes (selected): 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09; b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777; dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c; 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db; C96FBBE010DD4C5BFB801780856EC228; 78E701F42B76CCDE3F2678E548886860
- Network: https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7 (naobserbahan ang mga variant at subpath)
Timeline at patuloy na pagsusuri
Iniuugnay ng mga ulat ang paunang pagtuklas sa kalagitnaan ng Setyembre 2025, na may pinakamataas na mga aksyon sa pagpigil noong Setyembre 16–19. Ang GitHub at maraming vendor ay may na-update na mga proteksyon, pagtukoy, at gabay. Asahan ang mga karagdagang retroactive na natuklasan habang tinatapos ng mga organisasyon ang mga pagsusuri sa insidente at pinalawak ang mga listahan ng mga apektadong bersyon.
Ang ilang ebidensya ay nagmumungkahi na ang insidente binuo sa mga naunang lihim na pagtagas, na binibigyang-diin kung gaano katagal ang mga token at mga naka-cache na kredensyal ay maaaring mag-fuel ng mga bagong alon ng kompromiso pagkaraan ng ilang buwan. Dapat nitong palakasin ang mga pagsisikap na paikliin ang mga buhay ng token at gamitin ang mga modelo ng pag-publish na bawasan ang lihim na pagkalat.
Hindi lahat ng ulat ay sumasang-ayon sa eksaktong kabuuan o first‑in-chain na mga pakete, ngunit ang pangkalahatang larawan ay nakahanay: a self-replicating npm worm na ang tiwala ng developer ng sandata at naka-automate na mga karapatan sa pag-publish upang mabilis na lumaki—mas mabilis kaysa matukoy ng maraming koponan sa pamamagitan ng manu-manong pagsusuri lamang.
Ang kaganapan ay naglalarawan kung gaano kabilis ang modernong pagbuo ng mga pipeline ay maaaring maging mga highway para sa malware. Sa pamamagitan ng paghihigpit ng pagpapatunay, pag-aalis ng mga pangmatagalang token mula sa landas, pagpapatigas ng CI/CD, at agresibong pangangaso para sa mga IoC, maaaring maglaman ang mga organisasyon ng exposure ngayon at gawing mas mahirap isagawa ang susunod na wave.
