Компанию BitPay обвиняют в некомпетентности: в модуль Node.js, известный как «event-stream» и используемый миллионом веб-приложений, включая биткойн-кошелёк провайдера биткойн-платежей с открытым кодом Copay, был встроен вредоносный код.

Как сообщает CCN, изменения были внесены в библиотеку для потоковой передачи данных «event-stream» пользователем с очень небольшой активностью на GitHub, который запросил права у предыдущего модератора — Доминика Тарра (Dominic Tarr). Тарр, в свою очередь, утверждает, что не занимался репозиторием библиотеки «event-stream» уже несколько лет, передав контроль новому пользователю с ником right9ctrl.

Библиотека event-stream используется во многих приложениях Node.js. Судя по жалобе на GitHub, либо это был хитрый ход, либо новый модератор right9ctrl сделал это неосознанно. Факт в том, что такие действия способствовали утечке приватных ключей из приложений, которые использовали как event-stream, так и модули copay-dash.

Разработчик Айртон Спарлинг (Ayrton Sparling) пояснил, что модератор добавил «flatmap-stream» — компонент для процесса ps-tree, и затем почти в то же самое время опубликовал новую версию. Через три дня выходит новая версия, что даёт возможность почистить репозиторий, убрав flatmap-stream, но остаются затронутыми все версии 3.x — а это «миллионы установок в неделю».

По сути, разработчик обновил модуль с вредоносным ПО и затем исправил это, попытавшись скрыть, но многие пользователи уже установили его — и это повод для беспокойства. При этом Copay, открытый исходный код которого используется многими криптовалютными приложениями, — всего один из множества, работающих с библиотекой, но он создан и обслуживается многомилионным провайдером биткойн-платежей BitPay, что уже само по себе вызывает некоторое недоумение.

«Пакет NPM с 2 000 000 скачиваниями в неделю имеет встроенный вредоносный код. Никто не знает, что этот код успел натворить», — написал в Twitter программист Гари Бернхардт (Gary Bernhardt).

«Теперь мы знаем: он нацелен на copay-dash, биткойновый кошелёк, и крадёт файлы кошелька», — уверен его коллега по цеху Свен Слутвиг (Sven Slootweg).

Ошибочное мнение, распространённое среди пользователей, не имеющих отношения к разработке проектов с открытым кодом, что эта работа делается бесплатно в борьбе за идеалы или в качестве любимого хобби девелоперов, — ситуация совершенно иная. Большинство крупных и важных разработок в этом пространстве, таких как проекты Bitcoin Core или Linux Kernel, — в руках разработчиков, нанятых компаниями, заинтересованными в развитии такого софта.

«Вы знаете, сколько продуктов и сервисов делают это? Это проблема гораздо шире, чем один только BitPay», — пишет представитель проекта OpenBazaar Брайан Хоффман (Brian Hoffman).

Компании вроде Red Hat предоставляют код таким организациям как Linux Kernel или Blockstream, работающей с девелоперами Bitcoin Core. Причина очевидна: крупным участникам рынка необходимо прогрессировать в развитии, и они попросту имеют средства, чтобы позволить себе тем самым ускорить процесс.

Создатель Dogcoin Джексон Палмер (Jackson Palmer) также прокомментировал ситуацию, отметив, что она «выглядит, как будто эта атака была разработана конкретно для модуля NPM, используемого кошельком Copay». Он добавил: это — «одна из главных проблем с криптовалютными кошельками на базе JavaScript», которые опираются на менеджер пакетов NPM:

«@BitPay, естественно, доверяла всем разработчикам стриминга, рассчитывая, что они никогда не внедрят вредоносный код в свой кошелёк. @dominictarr также позволил хакеру это сделать, грустно».

Насколько справедливо то, что подобная модель, подходящая для крупного ПО, имеет право на существование, настолько верно и то, что BitPay не следовало бы использовать софт на основе доверия. Миллионы долларов в кошельках клиентов — ответственность провайдера, а не независимых модераторов решений вроде Node.js. Как пишет CCN, если компания не заинтересована в активном развитии библиотек, таких как event-stream, ей следует использовать версии форков, удостоверяясь, что каждое обновление безопасно, иначе речь идёт о некомпетентности.

Тем временем BitPay отреагировала на появление информации об уязвимости — в блоге компании появился пост, в котором разработчики просят пользователей, установивших кошелёк Copay версий 5.0.2 – 5.1.0, не запускать приложение и незамедлительно переместить средства на новые кошельки — обновлённая проверенная версия 5.2.0 уже доступна.

При этом необходимо отказаться от использования фраз для восстановления доступа и сначала обновить кошельки, а затем переместить средства с использованием функции Send Max, позволяющей перенести всё содержимое кошелька.

«Тем не менее, приложение BitPay не подвержено уязвимости из-за вредоносного кода. Мы продолжаем изучать, была ли эта уязвимость когда-либо использована против пользователей Copay», — написали представители провайдера биткойн-платежей.