Π’ 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 Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΠΊ ΠΈ возмоТности извлСчСния OIDC-Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΈΠ· памяти Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ runner-процСсса (Runner.Worker) Ρ‡Π΅Ρ€Π΅Π· Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ содСрТимого /proc/<pid>/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 -rf ~/Β».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster