Бэкдор в зависимости к event-stream, популярной библиотеке для Node.js

Пользователи библиотеки event-stream, около 2 миллионов копий которой еженедельно загружается из репозитория NPM и которая используется во многих крупных проектах, выявили вредоносный код в одной из зависимостей. Проблема выявлена в пакете flatmap-stream, в котором под видом тестового набора данных (test/data.js) в одной из переменных передавался вредоносный код, предназначенный для кражи криптовалюты и проведения целевой атаки на связанные с криптовалютой сервисы.

Вредоносный код использовался для кражи закрытых ключей от криптокошельков Copay. Во вредоносном коде также выполнялись манипуляции с файлами, используемыми в библиотеке bitcore-wallet-client. Не исключено, что атака может охватывать и другие связанные с криптовалютой приложения на Node.js, которые так или иначе связаны зависимостями с event-stream и производными библиотеками. Библиотека event-stream используется как зависимость в почти четырёх тысячах npm-пакетов, среди которых ps-tree и npm-run-all c 1.4 млн и 400 тыс. еженедельных загрузок.

В начале сентября автор библиотеки отстранился от дел и передал доступ к репозиторию event-stream и право публикации в NPM новому мэйнтейнеру right9ctrl, который являлся человеком со стороны, ранее не участвовал в разработке и общался с автором event-stream только по email. 9 сентября новый мэйнтейнер добавил пакет flatmap-stream в зависимости к event-stream. Примерно в то же время был сформирован выпуск flatmap-stream 0.1.1, в который был добавлен вредоносный код. 16 сентября, после выхода релиза event-stream 3.3.6, пакет flatmap-stream был удалён новым мэйнтейнером из зависимостей к event-stream, а релиз 3.3.6 был отозван из NPM. Судя по действиям нового мэйнтейнера event-stream, он и является организатором атаки.

Вредоносный код подменял функцию Credentials.getKeys, используемую для получения расшифрованных ключей в мобильном и настольном клиентском ПО Copay. В случае наличия в кошельке более 100 BTC или 1e3 BCH связанные с кошельками ключи и используемые для их расшифровки пароли отправлялись на подконтрольные атакующим серверы copayapi.host и 111.90.151.134. Пользователи могут оценить подверженность своих систем атаке запустив команду «npm ls event-stream flatmap-stream» — cистема скомпрометирована, если в выводе упомянута библиотека «flatmap-stream@0.1.1».

Разработчикам приложений рекомендуется зафиксифровать в зависимостях версию event-stream 3.3.4.
Создатели Copay подтвердили подверженность атаке выпусков приложений Copay (5.0.2-5.1.0) и BitPay, а также сформировали обновление клиентского ПО 5.2.2, в котором убрана привязка к библиотеке event-stream. Вредоносная версия пакета flatmap-stream в настоящее время уже удалена из репозитория NPM.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.