Одна вредоносная программа появилась сразу в двух репозиториях пакетов. 23 сентября Aikido обнаружила кроссплатформенный Go-червь sckit в заражённых релизах MemTensor (npm) и MemoryOS (PyPI). Атаку назвали supplychain.local по названию модуля внутри бинарника.

В npm пострадали версии плагина @memtensor/memos-cloud-openclaw-plugin 0.1.21, 0.1.23 и 0.1.25, в PyPI — MemoryOS 2.0.34. Между заражёнными npm-релизами выпустили чистые версии 0.1.22 и 0.1.24. Когда обнаружили атаку, заражённые сборки были последними, поэтому стандартная установка могла их автоматически загрузить.

Вредонос не полагался на preinstall или postinstall-скрипты. В npm-плагине sckit запускался при обращении OpenClaw к памяти, в PyPI — при импорте библиотеки. Параметр --ignore-scripts не блокировал червь, и проверка только install-хуков могла его пропустить.

После старта sckit искал секреты в домашнем каталоге и переменных окружения: токены npm, PyPI, GitHub, GitLab, ключи AWS и SSH, пароли Vault, Hugging Face, Slack, Stripe и SendGrid. Доступ к таким данным давал злоумышленнику путь к репозиториям, пакетам и облачной инфраструктуре.

SafeDep восстановила цепь через GitHub Actions самого MemTensor. Код в рабочих процессах перехватывал NPM_TOKEN и PYPI_API_TOKEN перед публикацией релизов. Для npm создавали короткоживущие ветки с несколькими циклами создания-удаления, для PyPI — неподписанные коммиты вне основной ветки. Как злоумышленник получил право на запись в репозиторий, не установлено.

Украденные ключи превращали машину разработчика или CI-окружение в новую точку распространения. sckit содержал команды npm publish, npm version patch, загрузку в PyPI через twine и шаблон GitHub Actions для запуска импланта после каждого push. Вредонос мог публиковать заражённые версии через похищенные учётные данные и переносить инфекцию между экосистемами.

Схема напоминает прежние атаки на npm-цепочки поставок с украденными токенами разработчиков. Летом Shai-Hulud распространялся через сотни npm-пакетов и крал секреты из окружения. supplychain.local расширил подход на PyPI и подготовил бинарники для Windows, Linux и macOS на x64 и ARM64.

Подтвержденный масштаб ограничен двумя пакетами MemTensor. Aikido не нашла публичных репозиториев, куда sckit успел внедрить GitHub Actions workflow или вспомогательные загрузчики на JavaScript и Python. Код содержит возможность самораспространения, но массовой цепной инфекции не подтверждено и новых заражённых пакетов не найдено.

С 28 сентября заражённые npm-релизы 0.1.21, 0.1.23 и 0.1.25 удалены, latest указывает на чистую 0.1.24. PyPI показывает MemoryOS 2.0.33 последней доступной версией. SafeDep рекомендует удалить пакет, завершить процессы sckit, проверить репозитории на неожиданные workflow и сменить все ключи и токены, доступные заражённой системе.