У 42 NPM-пакета TanStack інтэграваны самараспаўсюджвальны чарвяк

У выніку кампраметацыі працэсу фармавання рэлізаў на базе GitHub Actions у праекце TanStack атакавалым атрымалася апублікаваць у рэпазітары NPM 84 шкоднасныя версіі, якія ахопліваюць 42 NPM-пакета з стэка TanStack. Некаторыя са скампраметаваных пакетаў налічвалі больш за 10 мільёнаў загрузак у тыдзень.

Доступ да публікацыі рэлізаў быў атрыманы з-за няправільнай налады pull_request_target "Pwn Request" у GitHub Actions (указанне маскі ў наладах прывяло да запуску pull_request_target для pull-запытаў у іншыя форкі), атручванні кэша GitHub Actions праз памяці runner-працэсу (Runner.Worker) праз чытанне змесціва /proc/ /mem.

NPM-пакеты са шкоднаснымі зменамі былі апублікаваныя 11 траўня з 22:20 да 22:26 (MSK), заўважаныя праз 20 хвілін і блакіраваны праз паўтары гадзіны. Для кожнага з здзіўленых NPM-пакетаў былі выпушчаныя па дзве шкоднасныя версіі, у якія быў інтэграваны код для актывацыі чарвяка mini-shai-hulud, які выконвае пошук токенаў і ўліковых дадзеных у бягучым асяроддзі. У выпадку выяўлення токена падлучэння да каталога NPM чарвяк аўтаматычна публікаваў новыя шкоднасныя рэлізы для распрацоўваных у бягучым асяроддзі пакетаў, дзівячы дрэва залежнасцяў. Такім спосабам было здзіўлена больш за 400 NPM-пакетаў, якія выкарыстоўваюць пакеты TanStack у ліку залежнасцяў.

Чарвяк размяшчаўся ў файле router_init.js і актываваўся пры ўсталёўцы здзіўленага пакета ўручную распрацоўнікам або аўтаматызавана ў асяроддзі бесперапыннай інтэграцыі пры дапамозе каманд "npm install", "pnpm install" ці "yarn install". Пасля актывацыі чарвяк выконваў пошук у сістэме токенаў да NPM (~/.npmrc), AWS, GCP, Azure, HashiCorp і KubernetesK8s, а таксама зачыненых ключоў SSH. Знойдзеныя дадзеныя адпраўляліся зламыснікам праз дэцэнтралізаваны P2P-мэсанджар getsession.org.

У чарвяку было прадугледжана здзяйсненне дэструктыўных дзеянняў у выпадку адклікання перахопленага NPM-токена - у сістэме наладжваўся перыядычны запуск скрыпту ~/.local/bin/gh-token-monitor.sh, які кожныя 60 секунд правяраў актыўнасць токена праз зварот да api.github.com/user і ў выпадку адклікання ~/rm выконваў.

Крыніца: opennet.ru

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster