8 октября 2026 года в репозитории npm появилась заражённая версия пакета tensorlake - 0.5.144. Инструмент предназначен для разработчиков, которые создают и запускают ИИ-агентов. Внутри пакета оказался новый вариант червя Shai-Hulud. Вредоносная программа крадёт ключи доступа и пароли с заражённых машин и пытается размножиться дальше по цепочке поставок программного обеспечения. Общее число установок пакета превышает сто тысяч, ежемесячно его скачивают около 106 тысяч раз. Заражённая сборка провисела в открытом доступе несколько часов.
Описание
Атакующий не взламывал учётные записи в npm. Он вошёл в репозиторий проекта под именем одного из сопровождающих и загрузил вредоносные файлы напрямую в основную ветку через веб-интерфейс GitHub. Первая правка появилась 7 октября в 01:20 по UTC, всего их было восемь. Все изменения помечены как проверенные: GitHub автоматически подписывает то, что внесли через сайт. Спустя примерно двадцать часов злоумышленник запустил штатный процесс выпуска версии, и пакет ушёл в общий реестр. Формальное подтверждение происхождения сборки при этом осталось действительным. Такой документ удостоверяет лишь то, где собрали пакет, и ничего не сообщает о безопасности его содержимого.
Аналитики Socket, Aikido, SafeDep и StepSecurity независимо изучили релиз и описали происходящее при установке почти одинаково. Пакет содержит сценарий, который срабатывает автоматически во время установки - до того, как разработчик подключит библиотеку к своему коду. Сценарий подгружает стороннюю среду исполнения и запускает с её помощью намеренно запутанный файл размером около 856 килобайт. На серверах непрерывной сборки код останавливается сам. Основной удар приходится на рабочие станции разработчиков, где обычно хранятся ключи от промышленных систем.
Список целей широк. Это токены GitHub и npm, ключи облачного сервиса AWS, секреты Kubernetes и Vault, файлы SSH, сохранённые пароли браузеров, криптовалютные кошельки, настройки ИИ-инструментов разработки. Отдельно собираются данные из расширений браузера для работы с криптовалютами: в списке четырнадцать таких расширений. Собранное шифруется и уходит на сервер злоумышленников. Резервный адрес этого сервера спрятан в публичном блокчейне. Программа обращается к распределённому реестру и получает оттуда актуальный адрес, если основной не отвечает.
Самая опасная часть замысла связана с украденным токеном GitHub. Программа ставит на машину фоновую службу и каждые 60 секунд проверяет, действует ли этот токен. Проверка идёт в течение суток. Как только GitHub отвечает отказом, служба запускает удаление домашнего каталога пользователя. На Windows стирается весь профиль. Попытка отозвать скомпрометированный токен сразу после обнаружения проблемы приводит именно к этому. Сначала нужно снять службу, и только потом менять ключи.
Заражение не ограничивается одной машиной. С украденным токеном npm червь скачивает пакеты, которые жертва имеет право публиковать, добавляет в них себя, повышает номер версии и выкладывает обратно. С токеном GitHub он вносит изменения в чужие репозитории и оставляет файлы настроек редакторов и ИИ-ассистентов. Когда разработчик открывает такой проект, вредоносный код запускается снова. Отдельная задача червя - собственные сборочные сценарии, выгружающие все секреты репозитория.
Скорость реакции оказалась выше обычной для подобных историй. Socket зафиксировала угрозу через одиннадцать минут после публикации, SafeDep - через восемь. StepSecurity сообщила о находке сопровождающим проекта. Вредоносную версию убрали из npm, исходный код откатили и выпустили чистую сборку 0.5.145. Опасность при этом не исчезла: машины, где установка уже прошла, остаются заражёнными.
Порядок действий для тех, кто ставил пакет, важен. Сначала закрепите в проекте предыдущую версию 0.5.143, удалите каталог зависимостей и очистите локальный кеш пакетов. Затем найдите фоновую службу слежения и удалите её вместе со служебными файлами. Отключите автоматический запуск сценариев установки в настройках npm - это закрывает целый класс подобных атак. Только после этого меняйте токены GitHub и npm, ключи облачных сервисов, SSH-ключи и пароли в браузере. Дальше проверьте свои репозитории на новые публичные проекты и на правки, которых вы не делали.
Атаки на цепочку поставок сместились в сторону инструментов для ИИ-агентов. Такие библиотеки ставят на машины с широкими правами, а их установка редко вызывает вопросы. Подтверждение происхождения сборки, наличие документации и репутация проекта больше не служат надёжным ориентиром. Проверять приходится сам состав пакета и поведение сценариев установки. Для команд, работающих с ИИ-агентами, разумно ограничить права установщика и держать секреты вне рабочих станций разработчиков.