Вредоносные версии пакетов MemTensor собирают учётные данные и распространяются по цепочке поставок

Вредоносные версии пакетов MemTensor собирают учётные данные и распространяются по цепочке поставок

23 сентября 2026 года в публичных реестрах npm и PyPI появились модифицированные версии двух программных пакетов с открытым исходным кодом. Подмену зафиксировали в плагине OpenClaw для платформы npm и в библиотеке MemoryOS для Python. Оба компонента относятся к проекту MemTensor и используются разработчиками для интеграции с облачными сервисами.

Описание

Вредоносные выпуски содержат одинаковый двоичный файл под названием sckit. При запуске пакета этот компонент активизируется в фоновом режиме и начинает поиск конфиденциальных данных в домашней директории пользователя. Он собирает токены доступа к репозиториям, ключи шифрования, учётные записи облачных сервисов и другие секреты. Собранную информацию программа отправляет на подконтрольные злоумышленнику серверы.

По данным анализа, код также умеет копировать себя в другие проекты и пакеты, к которым у скомпрометированных учётных данных есть доступ. Это превращает атаку в самовоспроизводящуюся цепочку. Заражены версии 0.1.21, 0.1.23 и 0.1.25 для npm, а также версия 2.0.34 для PyPI. Чистые сборки 0.1.22 и 0.1.24 выходили в тот же день, но перемежались с вредоносными.

Разработчик, установивший уязвимую версию, мог даже не заметить подвоха. Вредоносный код запускается при обычной загрузке библиотеки или плагина. Для npm-пакета срабатывание происходит при старте шлюза OpenClaw и при каждом обращении к памяти. Для Python-библиотеки активация случается при первой настройке логирования, которую вызывает почти любой импорт модуля. Скрытые сценарии установки не требуются, поэтому стандартная мера защиты с отключением установочных скриптов не помогает.

Атакующий получил доступ к процессу публикации через скомпрометированные токены. В репозиторий MemTensor на GitHub были внесены правки, которые изменяли поведение сборочного конвейера. Вместо того чтобы сразу публиковать пакет, система передавала секретный ключ вредоносному скрипту. После получения токена сборка завершалась с ошибкой, и в реестр ничего не попадало, однако ключ уже оказывался у злоумышленника.

Схема повторялась для обоих репозиториев. В npm-реестре все пять версий, включая чистые и вредоносные, были опубликованы с одной учётной записи. Установить, кто именно загружал безопасные сборки, не удалось. В PyPI пакет MemoryOS загружался через тот же конвейер после публикации тега новой версии. Атакующий создал вредоносный коммит, получил токен, а затем пересоздал тег на изменённой версии кода и выпустил пакет уже с реальным ключом проекта.

Вредоносная программа использует несколько управляющих серверов. Конфигурация содержит встроенный срок действия до 22-23 октября 2026 года, после которого активность должна прекратиться. Внутри двоичного файла обнаружены функции для поиска репозиториев, подготовки удалённых проектов к заражению и рекурсивной публикации новых вредоносных пакетов. Программа также умеет определять часовой пояс, языковые настройки и другие параметры системы, что позволяет оператору отфильтровывать нежелательных жертв.

Для защиты разработчикам следует удалить заражённые версии и откатиться на чистые сборки: 0.1.20 для плагина и 2.0.33 для MemoryOS. Необходимо завершить все процессы sckit и удалить каталоги состояния в скрытых папках домашней директории. Все учётные данные, доступные из домашнего каталога и переменных окружения, нужно сменить. В репозиториях, куда пользователь может отправлять изменения, стоит проверить появление неожиданных файлов рабочих процессов и каталогов .sckit.

Для владельцев проектов с автоматической публикацией из системы непрерывной интеграции важен вывод: любой скрипт, выполняющийся до шага публикации, может влиять на последующие шаги. Доверенная публикация без долгоживущих токенов снижает риск. Защищённые теги и обязательная проверка релизов человеком могли бы заблокировать такие запуски. Отсутствие подписанных метаданных о происхождении артефактов не позволило системе контроля заметить подмену на раннем этапе.

Индикаторы компрометации

Комментарии: 0