Вредоносная версия 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-раннеров особое внимание — токенам публикации пакетов и доступу к исходному коду.

Источники: habr.com (CodeScoring), socket.dev, safedep.io

Рекомендованные статьи