КИБЕРБЕЗОПАСНОСТЬ

Shai-Hulud добрался до GitHub CrowdSec: украдены 170 приватных репозиториев

170 приватных репозиториев CrowdSec утекли после кражи OAuth-токена через npm-атаку TanStack. Разбираем, где сломалась гигиена доступа.

✍️ Редакция iTech News | 23.09.2026 | ⏱ 4 мин | Источник: Dark Reading

Атака Shai-Hulud обернулась для французской компании CrowdSec кражей примерно 170 приватных репозиториев GitHub. По данным Dark Reading, злоумышленники получили доступ не через взлом серверов, а через OAuth-токен бывшего сотрудника, чей компьютер был скомпрометирован в npm supply chain-атаке на TanStack. Для разработчиков и IT-директоров это неприятное напоминание: ноутбук инженера давно стал частью периметра, даже если в диаграммах безопасности он выглядит как личное устройство где-то сбоку.

Инцидент произошел 22 мая 2026 года и занял всего девять минут: с 5:52 до 6:01 UTC кто-то скачал данные GitHub-репозиториев CrowdSec с IP-адреса в Торонто. CrowdSec связывает действия с одним из основателей BreachForum и пользователем под ником diencracked. Компания узнала о проблеме только 16 сентября, когда на подпольном форуме pwnforum появился архив с исходным кодом из GitHub CrowdSec, а команда Fuites Info связалась с компанией и указала на утечку.

Ключевой деталью оказался GitHub API/OAuth-токен, который сохранил право читать приватные репозитории CrowdSec. Токен принадлежал аккаунту бывшего разработчика: человек уже ушел из компании, но все еще оставался в GitHub-организации, потому что должен был завершить часть работ. Именно этот промежуточный режим, знакомый почти любой инженерной команде, и стал входной дверью. CrowdSec удалила аккаунт из GitHub 25 мая, то есть через три дня после скачивания репозиториев.

По версии CrowdSec, компьютер бывшего сотрудника был заражен через TanStack npm supply chain attack. Это важная связка: атакующие не ломали CrowdSec напрямую, а прошли по цепочке зависимостей и разработческой машины. На практике это означает, что политика доступа, SSO, двухфакторная аутентификация и аудит не спасают полностью, если токен уже живет на скомпрометированной рабочей станции и обладает слишком широкими правами.

Компания заявляет, что утечка ограничилась исходным кодом CrowdSecurity: в архив попали более 130 публичных репозиториев и множество приватных. По словам CEO CrowdSec Филиппа Юмо, признаков доступа к инфраструктуре или базам данных компания не нашла. Также CrowdSec не увидела свидетельств того, что злоумышленники меняли исходный код, открытые проекты или пайплайны сборки. Это важное уточнение: кража кода болезненна, но подмена кода в build pipeline была бы уже сценарием с куда более неприятным радиусом поражения.

Реакция экспертов ожидаемо жесткая. Сооснователь и операционный директор Suzu Labs Денис Кальдероне назвал отзыв доступа в день ухода сотрудника базовой практикой безопасности. Его логика проста: если аккаунт бывшего сотрудника остается в организации, он перестает быть удобным исключением и становится активом без нормального владельца. А если этот аккаунт еще и может читать приватные репозитории, исключение превращается в готовый маршрут для выгрузки кода.

В CrowdSec подчеркивают, что у компании уже были разделение привилегий, двухфакторная аутентификация, менеджеры паролей, расширенное логирование, пентесты и аудиты. Но в момент инцидента EDR не был принудительно включен на машинах разработчиков. После атаки компания начала использовать endpoint-защиту, ориентированную в том числе на вредоносные пакеты и расширения. И это, пожалуй, главный практический вывод: рабочая станция разработчика, которая трогает код или инфраструктуру, должна считаться не периферией, а производственной зоной риска.

Для русскоязычных IT-команд история CrowdSec полезна не драмой вокруг бренда, а своей будничностью. Здесь нет киношного взлома дата-центра: есть бывший сотрудник, временно оставленный доступ, npm-цепочка, украденный токен и девять минут на скачивание репозиториев. Проверка offboarding-процесса, сроков жизни OAuth-токенов, прав GitHub Apps, обязательного EDR на dev-машинах и поиска секретов в репозиториях звучит скучно ровно до момента, когда архив с кодом оказывается на форуме.

Атака Shai-Hulud показывает, что supply chain-риск уже не ограничивается зависимостями в package-lock.json. Он тянется через расширения, токены, старые аккаунты, личные машины и исключения, которые когда-то казались разумными. Следующий рубеж для инженерных команд — не просто быстрее отзывать доступы, а проектировать разработческую среду так, будто любой токен однажды окажется чужим: с коротким сроком жизни, минимальными правами и понятным владельцем. Подробнее об инциденте пишет Dark Reading.

Поделиться: Telegram X LinkedIn