Хакеры выпустили вредоносные bee-js 13.3.0 и Swarm Desktop 0.56.2 для кражи ключей кошельков
Злоумышленники через автоматические релизы проекта Ethersphere опубликовали вредоносные версии библиотеки bee-js 13.3.0 и приложения Swarm Desktop 0.56.2. Код крадёт приватный ключ кошелька узла, сохранённый пароль и устанавливает бэкдор.

Главное в цифрах
- Версия bee-js 13.3.0 была последней на npm с 00:09 до 01:25 UTC
- Swarm Desktop 0.56.2 была доступна около 8,5 часа
- bee-js 13.3.0 скачали примерно 10 раз
- Swarm Desktop 0.56.2 набрала 65 загрузок к 08:27 UTC
Атакующие использовали собственную систему автоматических релизов проекта Ethersphere и опубликовали вредоносные версии двух инструментов децентрализованной сети хранения Swarm: библиотеки bee-js 13.3.0 и приложения Swarm Desktop 0.56.2. Обе сборки загружают и запускают код, который похищает ключ кошелька, хранящийся для узла в Swarm Desktop, и сохранённый пароль к нему. Код также устанавливает бэкдор на компьютеры с Windows, macOS и Linux.
Новость касается пользователей, которые ставили эти версии. Вредоносная версия bee-js была последней на npm около 75 минут, с 00:09 до 01:25 UTC. Swarm Desktop 0.56.2 появилась на GitHub примерно в 00:36 UTC и была отозвана через около 8,5 часа. Встроенный механизм обновления мог предложить её пользователям Windows x64 и Mac на Apple Silicon. По оценке компании Socket, bee-js 13.3.0 скачали примерно 10 раз, а Swarm Desktop 0.56.2 к 08:27 UTC набрала 65 загрузок. Сообщений о краже средств пока нет.
Как работал вредоносный код
Обе версии содержат один и тот же загрузчик, как показал анализ SafeDep. Он скачивает дополнительный код с домена api.frameworkmetrics[.]xyz и запускает его с правами пользователя. В bee-js загрузчик работает как postinstall-скрипт npm, поэтому выполняется при установке, даже если проект не импортирует библиотеку. В Swarm Desktop он запускается при каждом старте приложения.
Загруженный код ищет в папке данных Swarm Desktop файлы config.yaml и data-dir/keys/swarm.key. Если оба на месте, он отправляет их на сервер атакующих. Файл ключа зашифрован, но пароль к нему Swarm Desktop хранит в config.yaml открытым текстом. Имея оба файла, злоумышленники могут забрать токены xDAI и xBZZ кошелька узла, средства чековой книжки и стейк, по оценке компании.
На Linux и macOS бэкдор представляет собой удалённую оболочку evjawbreaker на Go, которая хранится в скрытой папке ~/.solidity. На Linux она работает как пользовательская служба, на macOS как LaunchAgent. Адрес сервера управления оболочка читает из смарт-контракта Ethereum, поэтому атакующие могут менять его в любой момент. На Windows код устанавливает настоящий клиент удалённого доступа ScreenConnect от компании ConnectWise, который подключается к ретранслятору атакующих. Если пользователь администратор, код получает права администратора обходом UAC, добавляет исключение в Microsoft Defender и тихо устанавливает клиент.
Как попали в релиз
Оба релиза опубликованы из аккаунта bee-worker, через который Ethersphere автоматизирует выпуск версий. Изменения не были подписаны и не отправлялись как pull request. Для bee-js атакующие опубликовали релиз на GitHub, что запустило рабочий процесс публикации в npm. Он не требовал одобрения и выложил пакет за 73 секунды. Поскольку сборку выполнил настоящий процесс проекта, у пакета был корректный provenance, который показывает место сборки, но не проверку кода.
Для Swarm Desktop атакующие вручную запустили workflow сборки с сертификатами подписи Apple и Windows, который тоже не требовал одобрения. macOS-приложение было подписано Developer ID проекта и нотаризовано Apple, поэтому система показала только обычное предупреждение при первом запуске. Как именно атакующие получили доступ, неизвестно. Мейнтейнер в заметке об инциденте указывает на кражу учётных данных и секретов CI. По данным анализа, использовались два аккаунта GitHub: bee-worker и аккаунт давнего мейнтейнера.
Проект выпустил чистую версию Swarm Desktop 0.56.3, которая совпадает с 0.56.1 и подписана новым сертификатом Developer ID. Однако это не удаляет уже установленный бэкдор и не защищает ключи, которые уже ушли атакующим. Для подписывающих заданий включено ожидание одобрения команды DevOps, и они запускаются только из основной ветки. По словам The Hacker News, сравнение исходного кода не выявило изменений, кроме номера версии и заметок о релизе.
Связь с прошлыми атаками
Инфраструктура совпадает с фальшивыми расширениями для разработчиков Solidity, которые появились на маркетплейсе Open VSX в сентябре. Исследователи Pluto Security описали их в анализе EtherDuck от 1 октября. Pluto с высокой степенью уверенности связывает их с группой, стоявшей за расширением SleepyDuck, которое в 2025 году читало адрес сервера из другого смарт-контракта Ethereum. Socket утверждает, что та же группа стоит за релизами bee-js и Swarm Desktop.


