Обычное обновление SDK для ИИ-инфраструктуры оказалось ловушкой, которая запускалась ещё до первого импорта библиотеки. В npm появилась вредоносная версия tensorlake 0.5.144 с червём Shai-Hulud. Socket обнаружила релиз примерно через 11 минут после публикации, а официальный TypeScript-пакет Tensorlake скачивали около 12 тыс. раз в неделю.
Заражение начиналось через preinstall-хук, поэтому вредоносный код запускался автоматически при установке зависимости. Обфусцированный setup.mjs загружал среду Bun и передавал управление файлу Math_Symbol.js с основной нагрузкой. Пользователю не требовалось запускать Tensorlake или создавать ИИ-агента, достаточно было установить заражённый релиз.
Shai-Hulud собирал токены GitHub и npm, облачные ключи, SSH-ключи, секреты Kubernetes и Vault, данные CI/CD и локальные файлы конфигурации. Новая разновидность также искала хранилища 14 браузерных расширений для криптокошельков и запускала HackBrowserData, чтобы извлечь сохранённые учётные данные, файлы cookie и данные браузерных сессий.
Украденные токены превращали заражённую машину в новую точку распространения. Получив права на публикацию в npm, червь скачивал пакеты жертвы, добавлял собственную нагрузку, повышал номер версии и публиковал заражённые сборки. Такой механизм продолжает августовскую кампанию ChainDrop, когда Shai-Hulud затронул 444 npm-пакета с огромной суммарной аудиторией.
Отдельный механизм закреплялся в системе как gh-token-monitor и каждые 60 секунд проверял украденный GitHub-токен. Если владелец отзывал токен, вредоносный обработчик мог удалить домашний каталог пользователя. Червь также добавлял файлы настроек Claude Code и VS Code в доступные репозитории, чтобы снова запуститься при открытии проекта.
Атака затронула не сторонний клон, а официальный SDK Tensorlake. StepSecurity выяснила, что вредоносные файлы попали прямо в основную ветку GitHub под учётной записью сопровождающего, после чего штатный workflow выпустил пакет с корректной npm provenance-аттестацией. Такая подпись подтверждала происхождение сборки, но не безопасность исходного кода.
Версию 0.5.144 уже удалили из npm. На момент первых разборов предыдущая 0.5.143 оставалась чистой, а PyPI и Cargo-сборки Tensorlake признаков заражения не показывали. Командам, где успел установиться опасный релиз, рекомендуют считать доступные процессу секреты скомпрометированными и проверить историю публикаций пакетов, журналы GitHub и изменения репозиториев.
Перед отзывом GitHub-токенов источники советуют сначала изолировать заражённую систему и удалить gh-token-monitor, чтобы не сработал механизм удаления файлов. После очистки нужно заменить npm, GitHub и облачные ключи, SSH-секреты и другие учётные данные с чистого устройства, а затронутые среды пересобрать из доверенных источников и проверить на следы закрепления.
