Перейти к основному контенту
LiMP VPN
Все новости

Взлом через npm: у CrowdSec украли 170 репозиториев

Взлом через npm: у CrowdSec украли 170 репозиториев

Коротко: В мае 2026 года злоумышленники заразили 84 версии популярных npm-пакетов библиотеки TanStack. Каждая установка тихо похищала GitHub-токены и SSH-ключи разработчиков. Один такой токен позволил скопировать 170 приватных репозиториев компании CrowdSec — производителя защитного ПО — всего за 9 минут. Атака оставалась незамеченной 117 дней, пока похищенный код не обнаружился на хакерском форуме.

Что такое атака на цепочку поставок и почему она опасна

npm — реестр, через который разработчики по всему миру скачивают готовые библиотеки для своих проектов. Когда вы пользуетесь веб-сервисом или устанавливаете приложение, внутри него с большой вероятностью работают десятки таких пакетов. Атака на цепочку поставок — это компрометация не самого продукта, а одной из его зависимостей на этапе сборки или обновления.

11 мая 2026 года неустановленный злоумышленник воспользовался уязвимостью в GitHub Actions-воркфлоу проекта TanStack — популярной JS-библиотеки с более чем 130 млн загрузок в месяц. Через цепочку из трёх шагов — небезопасный триггер pull_request_target, отравление кэша GitHub Actions и кража OIDC-токена — атакующий получил право публиковать пакеты от имени проекта. В результате вышли 84 вредоносные версии 42 пакетов @tanstack. Инциденту присвоен идентификатор CVE-2026-45321. Подробнее о современных угрозах читайте в блоге LiMP VPN.

Заражённые версии при установке выполняли скрытый скрипт, который собирал с компьютера разработчика: GitHub- и npm-токены, SSH-ключи, учётные данные AWS, GCP, Kubernetes и Vault. Всё это уходило на сервер злоумышленника, пока разработчик видел обычный прогресс-бар установки пакета.

Девять минут — и 170 репозиториев похищены

22 мая 2026 года бывший сотрудник CrowdSec — французской компании, разрабатывающей одноимённое защитное ПО — обновил npm-пакеты TanStack на своём компьютере. Он уже не работал в компании, но его GitHub-аккаунт с правами в организации ещё не был деактивирован: это частая проблема при увольнении — администраторы отзывают доступы постепенно, а не мгновенно.

Заражённый пакет похитил OAuth-токен GitHub. Уже через несколько часов, с IP-адреса в Торонто, злоумышленник воспользовался этим токеном: с 05:52 до 06:01 UTC были клонированы 170 приватных репозиториев CrowdSec. Ровно 9 минут и 4 секунды. Среди похищенного оказались исходный код SaaS-консоли, скрипты автоматизации, модели обработки данных, а главное — алгоритм формирования списков вредоносных IP-адресов, лежащий в основе продукта. 25 мая аккаунт уволившегося сотрудника наконец удалили из организации — но три дня и 170 репозиториев было уже не вернуть.

117 дней в тени: как долго может скрываться взлом

После кражи злоумышленник не торопился: 17 августа, почти через три месяца, он проверил доступность похищенного AWS-токена. И лишь 16 сентября 2026 года архив с репозиториями появился на одном из хакерских форумов. Только тогда CrowdSec обнаружил произошедшее — спустя 117 дней после кражи.

Расследование осложнялось тем, что GitHub по умолчанию хранит аудит-логи всего 7 дней. Часть следов к моменту обнаружения была безвозвратно утрачена. CrowdSec пришлось восстанавливать картину по косвенным данным. Это типичная черта атак на цепочку поставок: они не ломают замки на ваших дверях — они входят с чужим ключом через парадный вход, не поднимая тревоги.

Что именно похищено и что это значит для пользователей

Производственная инфраструктура CrowdSec, базы данных клиентов и клиентские пароли затронуты не были. Тем не менее утечка серьёзна:

  • Исходный код алгоритма безопасности. Алгоритм определения репутации IP-адресов — ключевая часть продукта CrowdSec. Теперь злоумышленники знают его логику и смогут разрабатывать способы обхода.
  • Персональные данные 83 пользователей. Email-адреса, а также имена и контакты 51 потенциального инвестора попали в руки неизвестных.
  • AWS-учётные данные. Хотя роль имела ограниченные права, её наличие в архиве представляет потенциальный вектор для дальнейших атак.

Важен более широкий контекст: если код системы защиты оказался у злоумышленников, это может помочь им обходить именно те механизмы, которые должны защищать серверы и пользователей. LiMP VPN использует собственную инфраструктуру, независимую от репутационных списков CrowdSec.

Как снизить риск: советы пользователям и разработчикам

Для обычного пользователя прямая угроза минимальна — вы не устанавливаете npm-пакеты вручную. Но вы пользуетесь сервисами, разработанными с их помощью. Несколько практических шагов:

  • Следите за уведомлениями об утечках. Если сервис сообщает об инциденте — немедленно смените пароль и включите двухфакторную аутентификацию.
  • Используйте уникальные пароли. Менеджер паролей гарантирует, что компрометация одного сервиса не откроет доступ к остальным.
  • Шифруйте свой трафик. Даже если серверная часть приложения была скомпрометирована на уровне кода, подписка LiMP VPN защищает ваши данные в пути — злоумышленник не сможет перехватить трафик между вашим устройством и сервером.

Для разработчиков: регулярно запускайте npm audit, фиксируйте версии зависимостей с точными хэшами, немедленно деактивируйте доступы уволившихся сотрудников во всех системах одновременно и настройте внешний стриминг GitHub Audit Logs с хранением не менее 90 дней.

Источники

Взлом через npm: у CrowdSec украли 170 репозиториев