CVE-2026-56744: уязвимость в @bsv/wallet-toolbox позволяет подменить получателя платежа при удалённом хранилище
В библиотеках @bsv/wallet-toolbox, @bsv/wallet-toolbox-client и @bsv/wallet-toolbox-mobile обнаружена уязвимость высокого уровня критичности (CVSS 8.7), позволяющая вредоносному или скомпрометированному провайдеру хранилища подменить выходные скрипты транзакции. В результате кошелёк подписывает и отправляет платёж по адресу злоумышленника, тогда как интерфейс продолжает показывать корректного получателя. Уязвимы версии 1.1.47–2.3.3; исправление выпущено в 2.4.0.
Подробности
Уязвимость CVE-2026-56744 получила оценку CVSS 8.7 (HIGH). Она присутствует в трёх пакетах проекта bsv-blockchain: `@bsv/wallet-toolbox`, `@bsv/wallet-toolbox-client` и `@bsv/wallet-toolbox-mobile`. Первый предоставляет компоненты подписи и хранения для кошельков стандарта BRC-100, два других — клиентские дистрибутивы для обычных и мобильных приложений, использующих сервисы хранения кошелька. Суть проблемы в том, что при создании транзакции через удалённый `StorageClient` в методе `createAction` библиотека доверяет выходным скриптам блокировки (locking scripts), которые возвращает провайдер хранилища, не проверяя их соответствие выходам, запрошенным вызывающей стороной. Злоумышленник, контролирующий или скомпрометировавший провайдера хранилища, может подменить скрипт получателя либо добавить дополнительный выход. Кошелёк при этом подпишет и транслирует в сеть транзакцию, перенаправляющую средства, в то время как приложение и пользовательский интерфейс продолжат отображать изначально указанного получателя. Поскольку пользователь видит корректные данные, а подпись формируется на основе подставленных скриптов, обнаружение подмены без независимой проверки затруднено. Согласно истории публикаций в исходном коде и npm, уязвимы стабильные версии `@bsv/wallet-toolbox` и `@bsv/wallet-toolbox-client` с 1.1.47 по 2.3.3, а также `@bsv/wallet-toolbox-mobile` — с начального релиза 1.3.21 по 2.3.3.Что делать
Все три пакета исправлены в версии 2.4.0. Разработчикам рекомендуется в первую очередь обновить зависимости до этой версии или более новой. Если обновление невозможно, следует применить одну из компенсирующих мер: - отказаться от использования удалённых провайдеров `StorageClient` в пользу локального хранилища; - самостоятельно проверять locking script и значение каждого выхода транзакции на соответствие исходному запросу перед подписью; - рассматривать любого внешнего провайдера хранилища как потенциально недоверенный источник данных о выходах.Итог
CVE-2026-56744 демонстрирует классический риск слепого доверия к данным, поступающим от внешнего сервиса, при операциях с финансами. Даже корректный пользовательский интерфейс не защищает от подмены на уровне подписываемых данных. Обновление до версии 2.4.0 закрывает уязвимость, а до его установки безопаснее работать с локальным хранилищем и проверять выходы транзакций независимо.Источник: CVE Project (cvelistV5)
