TGViewer
Типичный Сисадмин Типичный Сисадмин @sysodmins · 38.2K subscribers
Post #29548 11.9K
😱 Апокалипсис в npm. Червь Shai-Hulud заразил 800+ пакетов и крадет админские ключи

Масштаб приличный... заражено более 800 пакетов, суммарно генерирующих свыше 2 миллиардов установок в месяц.

Всё началось со взлома GitHub-аккаунта разработчика библиотеки keyv (у которой 127 млн скачиваний в неделю). Злоумышленник пропихнул вредоносный код прямо в main ветку и выпустил релиз.

Зараженный пакет выглядит абсолютно чистым по контрольным суммам, но в его package.json зашит хук: "preinstall": "node setup.mjs".
Как только разраб или CI/CD-сервер делает npm install, срабатывает этот хук. Он скачивает среду выполнения Bun, а через нее запускает вторую стадию - обфусцированный JS-файл на 728 КБ.

Дальше начинается пылесос:
🟢Скрипт сканирует локалку и ворует токены npm, GitHub, токены Kubernetes и т.д. Он даже дергает метаданные облачных инстансов и читает ключи из памяти раннеров GitHub Actions.
🟢Награбленное добро шифруется RSA-ключом и коммитится в рандомные публичные репозитории на GitHub. Если гитхаб недоступен, адреса резервных C2-серверов берутся напрямую из... смарт-контракта в сети Ethereum 😮
🟢Получив npm-токены, вирус смотрит, к каким пакетам есть права на публикацию. Скачивает их, заражает тем же хуком, увеличивает версию (bump) и публикует от имени разраба обратно в npmjs.org. Именно так эпидемия расползлась на сотни чужих библиотек.

И самая лютая фича... вирус прописывается в автозагрузку (через systemd или LaunchAgent) и каждую минуту проверяет, жив ли украденный им токен. Если разраб или безопасники отзывают скомпрометированный токен, сервер GitHub вернет ошибку 40x. Вирус увидит это, моментально скачает с C2-сервера команду возмездия, выполнит ее через eval и только потом удалится. Так что разумное ни в коем случае не отзывать токены сразу. Сначала нужно физически найти и убить процесс вируса на машине, иначе сработает скрипт кабздеца (уничтожение данных, саботаж, затирание следов).

Типичный 🥸 Сисадмин
  • 👀 100
  • ✍ 14
  • ❤ 12
  • 🔥 8
  • 😱 7
  • 👏 4
  • 😁 4
  • 🗿 2
  • 👍 1
  • 🤔 1
More from @sysodmins
  1. Sep 28, 2026Обычно админа спрашивают только «почему не работает?». А тут спросили, какие роллы он люби…
  2. Sep 28, 2026Опытный пользователь запилил новые ножки мыши с низким коэффициентом трения 👨‍🔬 Типичный…
  3. Sep 28, 2026Юзеру повезло 🔥 #предложка Типичный 🥸 Сисадмин
  4. Sep 28, 2026Сложный, но критически важный процесс: усиление защищенности инфраструктуры. Для него нужн…
  5. Sep 28, 2026На экзамене CCNA ты выбирал длинный вариант C, а на реальном проде долбишь wr по три раза…
  6. Sep 28, 202610/10! Грубо, но эффективно... 5070 🏥 Типичный 🥸 Сисадмин
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →