Вредоносная версия bee-js в npm похищала ключи криптокошельков ещё до запуска приложения
Специалисты по безопасности цепочки поставок ПО обнаружили вредоносную версию JavaScript-библиотеки @ethersphere/bee-js — официального клиента децентрализованного хранилища Swarm. С 9 ноября версия 13.3.0 классифицируется как вредоносная: при установке она незаметно запускала код, нацеленный на кражу ключей криптовалютных кошельков, причём вредонос срабатывал ещё до того, как разработчик начинал использовать библиотеку в своём приложении.
Как заражённый пакет попал в официальный репозиторий
Самое тревожное в этой истории — способ публикации. Вредоносный релиз прошёл через штатный процесс выпуска проекта: под учётной записью bee-worker в официальный репозиторий внесли прямой коммит, после чего создали релиз, запустивший существующий workflow GitHub Actions. По данным сервиса Socket, метаданные сборки в npm указывали на официальный репозиторий и легитимный конвейер публикации — к моменту релиза вредоносный код уже находился в исходниках.
Злоумышленники изменили пакет так, чтобы вредоносный скрипт запускался автоматически при установке. Если в проекте разрешено выполнение install-скриптов, вредонос стартовал раньше, чем библиотека вообще была использована по назначению.
Что делал вредонос
В комментариях к коду обращение к командному серверу маскировалось под «отправку аналитики». На деле скрипт получал оттуда JavaScript и сразу запускал его с правами пользователя, устанавливающего пакет. Полезная нагрузка:
- искала в данных приложения Swarm Desktop зашифрованный ключ кошелька и файл конфигурации;
- если в конфигурации хранился пароль от ключа, кража двух файлов давала злоумышленнику полный контроль над кошельком;
- на Linux и macOS дополнительно устанавливался бэкдор для удалённого выполнения команд.
По данным SafeDep, адрес командного сервера вредонос читал из смарт-контракта Ethereum — оператор мог сменить его одной транзакцией, не выпуская новую сборку. Важный нюанс: заражённая версия могла прийти и транзитивно, поскольку диапазоны зависимостей ряда инструментов Swarm допускали версию 13.3.0. Одной проверки прямых зависимостей в манифесте недостаточно — нужно смотреть фактически разрешённую версию в lock-файле.
Частые вопросы
Что такое bee-js и кому это угрожает?
Это официальная JavaScript-библиотека для работы с распределённым хранилищем Swarm. Угроза касается разработчиков и пользователей, которые устанавливали версию 13.3.0 напрямую или как транзитивную зависимость, особенно владельцев Swarm Desktop.
Как понять, затронута ли моя система?
Проверьте lock-файлы, кэши пакетов и журналы установки в CI на наличие bee-js версии 13.3.0, включая транзитивные зависимости. Если она устанавливалась с разрешёнными скриптами или запускался Swarm Desktop 0.56.2, систему стоит исследовать.
Почему вредонос прошёл штатную публикацию?
Заражённый релиз выпустили под официальной учётной записью bee-worker через существующий workflow GitHub Actions, а метаданные сборки указывали на легитимный репозиторий. Это пример компрометации цепочки поставки, когда доверенный канал публикации используют для распространения вредоносного кода.
Что делать, если версия 13.3.0 устанавливалась?
Удалите пакет и откатитесь на безопасную версию, проверьте машину или CI-раннер на следы компрометации. Для CI-раннеров особое внимание — токенам публикации пакетов и доступу к исходному коду.
Рекомендованные статьи