GitHub Actions'i kaudu Redaktori vabanemiste loomise protsessi kompromiteerimise tulemusena Ă”nnestus rĂŒndajatel avaldada NPM-i hoidlas 84 pahatahtlikku versiooni, mis katavad 42 NPM-paketti TanStacki stack'ist. Osadele kompromiteeritud pakettidele oli ĂŒle 10 miljoni allalaadimise nĂ€dalas.
Pöördumine avaldatud vĂ€ljaannete juurde oli saadud vale konfiguratsiooni tĂ”ttu pull_request_target âPwn Requestâ GitHub Actions'is (maski mÀÀramine seadetes viis pull_request_target'i kĂ€ivitamiseni kolmandate osapoolte forkkide jaoks), GitHub Actions'i vahemĂ€lu saastamise tĂ”ttu forki kaudu ning OIDC-mĂ€rgendite hankimise vĂ”imaluse tĂ”ttu kĂ€imasoleva runner-protsessi (Runner.Worker) mĂ€lust, lugedes sisu /proc//mem.
Pahatahtlikud NPM-paketid avaldati 11. mail ajavahemikus 22:20 kuni 22:26 (MSK), mĂ€rgati 20 minuti pĂ€rast ja blokeeriti poolteise tunni pĂ€rast. Iga kahjustatud NPM-paketi kohta avaldati kaks pahatahtlikku versiooni, kuhu oli integreeritud kood mini-shai-hulud-wormi aktiveerimiseks, mis otsis token'ite ja volituste olemasolu praeguses keskkonnas. Kui NPM'i direktorisse ĂŒhendamise token leiti, jĂ”udis worm automaatselt avaldada uusi pahatahtlikke versioone praeguses keskkonnas töötavatele pakettidele, mĂ”jutades sĂ”ltuvuste puu. Niimoodi oli kahjustatud ĂŒle 400 NPM-paketti, mis kasutasid TanStacki pakette sĂ”ltuvustena.
KÀÀrmuhv asus failis router_init.js ja aktiveerus pĂ€rast nakatatud paketi kĂ€sitsi installimist arendaja poolt vĂ”i automatiseeritult pideva integreerimise keskkonnas kĂ€skudega ânpm installâ, âpnpm installâ vĂ”i âyarn installâ. PĂ€rast aktiveerimist otsis kÀÀrmuhv sĂŒsteemist NPM-i (~/ .npmrc), AWS, GCP, Azure, HashiCorpi ja KubernetesK8s tokenite ning ka SSH privaatvĂ”tmete jĂ€rele. Leitud andmed saadeti rĂŒndajatele detsentraliseeritud P2P-sĂ”numiteenuse aadressil getsession.org.
KÀÀrmuhv oli kavandatud kĂ€ivitama hĂ€vitavaid tegevusi juhuks, kui NPM-tokeni saadi tagasi â sĂŒsteemis seadistati skripti ~/.local/bin/gh-token-monitor.sh perioodiline kĂ€ivitamine, mis kontrollis iga 60 sekundi tagant tokeni aktiivsust api.github.com/user'i kaudu ja juhul, kui token oli tagastatud, tĂ€itis kĂ€sku ârm -rf ~/â.
Allikas: opennet.ru
