Osegi
Безопасность·2 мин чтения

bee-js 13.3.0 в npm пыталась украсть ключи криптокошельков

Версия 13.3.0 библиотеки @ethersphere/bee-js для Swarm вышла через штатный процесс публикации проекта и сразу при установке пыталась похитить ключи кошельков.

Laptop screen showing JavaScript code with a red warning icon and a crypto wallet key being pulled away.
Фото: Хабр

Достаточно было поставить @ethersphere/bee-js версии 13.3.0, и вредонос начинал искать ключи криптокошельков. С 9 ноября CodeScoring относит эту версию JavaScript-библиотеки для распределённого хранилища Swarm к вредоносным.

Самое неприятное в том, как пакет попал в npm. Не через взлом чужой учётной записи, а через штатный процесс публикации проекта. Под учётной записью выпуска bee-worker в официальный репозиторий внесли прямой коммит, затем создали релиз, и тот запустил существующий workflow GitHub Actions. По данным Socket, сведения о сборке в npm указывали на официальный репозиторий и обычный процесс выпуска. Вредонос к тому моменту уже лежал в исходниках.

Как работал вредонос в bee-js 13.3.0

Злоумышленники изменили пакет так, чтобы скрипт запускался автоматически при установке. Если выполнение таких скриптов было разрешено, вредонос срабатывал ещё до того, как библиотеку начали использовать в приложении. В комментариях к коду обращение к их серверу было названо отправкой аналитики. На деле скрипт получал оттуда JavaScript и сразу выполнял его с правами пользователя, который ставил пакет.

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

На Linux и macOS атака шла дальше: ставился бэкдор для удалённого выполнения команд. Адрес командного сервера он читал из смарт-контракта Ethereum. Оператор мог поменять адрес одной транзакцией, не выпуская новую сборку вредоноса.

Как проверить, затронут ли ваш проект

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

Командам, использующим bee-js, стоит проверить lock-файлы, кэши пакетов и журналы установки в CI на версию 13.3.0, включая транзитивные зависимости. Если она ставилась с разрешёнными скриптами или запускался Swarm Desktop 0.56.2, машину или CI-раннер нужно исследовать. Для раннера это касается токенов публикации пакетов и доступа к исходникам.

По данным CodeScoring, блокирующие политики с условием «Зависимость опасна» останавливают загрузку этого и других известных вредоносных пакетов в модуле CodeScoring.OSA и сборку проекта в модуле CodeScoring.SCA.

Приложения, на которые стоит взглянуть

SUMO: числовая головоломка

Выбирайте нужные клетки, складывайте, достигайте цели. Легко понять, сложно освоить. Бесплатно, для любого возраста.

Теги:npmswarmbee-jssupply chain attackcrypto walletgithub actions

Ещё за этот день

Показать все →

Ещё в рубрике: Безопасность

Показать все →