30 апреля 2026 года исследователи сообщили о компрометации популярной библиотеки lightning из экосистемы PyTorch Lightning. Вредоносный код оказался в версиях 2.6.2 и 2.6.3 на PyPI. Это особенно опасно потому, что пакет часто используют для обучения классификаторов, дообучения LLM, диффузионных моделей и моделей временных рядов, а установка через обычный pip install lightning автоматически подтягивала заражённую сборку. Главная проблема в том, что вредонос активируется не после запуска какого-то отдельного скрипта, а уже при первом импорте модуля. То есть достаточно было установить пакет и просто использовать его в проекте, чтобы цепочка атаки начинала работать. Что именно произошло По данным исследователей, в пакете спрятали скрытую директорию _runtime с обфусцированным JavaScript-пейлоадом, а импорт модуля запускал скрытый процесс, который подтягивал дополнительный исполняемый код. Дальше вредонос переходил к сбору секретов: GitHub-токенов, npm-ключей, переменных окружения и облачных учётных данных для AWS, Azure и GCP. Отдельно отмечается, что на Linux-раннерах GitHub Actions атака пыталась дампить память процесса и вытащить всё, что могло быть полезно для дальнейшего доступа к инфраструктуре. Иначе говоря, заражение затрагивало не только локальные машины разработчиков, но и CI/CD-среды. Масштаб проблемы PyTorch Lightning - это не узкая утилита, а базовый инструмент для большого числа ML-проектов. Если такая библиотека оказывается скомпрометирована, под угрозой оказываются не один-два ноутбука разработчиков, а целые пайплайны обучения, публикации моделей и сборки артефактов. Опасность усиливает и то, что украденные данные уходили сразу по нескольким каналам. Помимо отправки на сервер атакующих, вредонос использовал GitHub Commit Search API и даже создавал публичные репозитории под названиями из вселенной "Дюны", чтобы спрятать следы и усложнить обнаружение. Как действовал механизм атаки Исследователи отдельно подчёркивают необычный механизм живучести. Вредонос добавлял себя в конфиг Claude Code через .claude/settings.json, прописывая хук SessionStart. Это означало, что при открытии заражённого репозитория вредонос мог срабатывать снова и снова без дополнительного взаимодействия пользователя. Параллельно атака модифицировала .vscode/tasks.json, чтобы запускаться при открытии папки проекта. Если на машине находились npm-учётные данные, вредонос пытался распространиться дальше и заражал пакеты, которые можно было публиковать с этим токеном. Так атака могла перекидываться из PyPI в npm-экосистему. Как узнать, попали ли вы под атаку вредоноса Если в вашей среде когда-либо использовались версии lightning 2.6.2 или 2.6.3, их нужно считать скомпрометированными. Рекомендуемое действие - откатиться на 2.6.1 или перейти на заведомо чистую версию после проверки источника. Если в окне уязвимости работал CI с правами на запись в репозиторий, нужно проверить наличие файлов .claude/router_runtime.js, .vscode/setup.mjs и workflow с названием Formatter. Все GitHub-токены, ключи AWS/Azure/GCP и npm-токены, которые присутствовали в этом окружении, следует считать скомпрометированными и немедленно ротировать. Что известно о том, кто за этим стоит Атаку связывают с той же группой, которая стояла за кампанией Mini Shai-Hulud. Основанием для этого называют характерные коммит-сообщения и структуру IOC. PyPI уже отреагировал на инцидент, а проект был помещён в карантин. Этот случай хорошо показывает, насколько уязвимой остаётся цепочка поставок в мире ML. Когда вредонос попадает не в саму модель, а в привычную библиотеку вокруг неё, последствия могут быть гораздо шире, чем обычная ошибка в коде.