В 42 NPM пакета TanStack е интегриран саморазпространяващ се червей

В резултат на компрометирането на процеса на генериране на релизи в GitHub Actions в проекта TanStack, на нападателите успя да публикуват 84 злонамерени версии в хранилището NPM, обхващащи 42 NPM пакета от стека TanStack. Някои от компрометираните пакети имаха над 10 милиона сваляния седмично.

Достъпът до публикуването на релизи е получен заради неправилна конфигурация на pull_request_target "Pwn Request" в GitHub Actions (указването на маска в настройките е довело до стартиране на pull_request_target за pull заявки в странични форкове), отравяне на кеша на GitHub Actions чрез форк и възможността за извличане на OIDC токен от паметта на стартиралия 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 и Kubernetes K8s, както и затворени SSH ключове. Намерените данни се изпращаха на нападателите чрез децентрализиран P2P мессенджър getsession.org.

В червея беше предвидено извършването на разрушителни действия в случай на отзоваване на прихванат NPM токен — в системата се настройваше периодично стартиране на скрипта ~/.local/bin/gh-token-monitor.sh, който проверяваше активността на токена на всеки 60 секунди чрез запитване към api.github.com/user и в случай на отзоваване на токена изпълняваше командата "rm -rf ~/".

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster