В популярных сервисах для хранения криптовалют Ledger Live, BRD и Edge была обнаружена критическая уязвимость. С её помощью злоумышленники могли заставить пользователя думать, что он получил биткоины, хотя это было не так.

Уязвимость выявили создатели кошелька ZenGo. Они уведомили о своей находке разработчиков соответствующих сервисов и согласились не предавать огласке эту информацию в течение 90 дней в соответствии с принципами ответственного раскрытия. ZenGo характеризуют выявленную ими проблему как «уязвимость повторного расходования», то есть технически использование одних и тех же биткоинов для совершения более чем одной операции. Разработчики уязвимых кошельков с таким определением не соглашаются.

Уязвимость возникает из-за имеющейся в биткоине функции «Replace-by-Fee», которая позволяет заменить находящуюся в обработке транзакцию новой, с более высокой комиссией. Эта функция может быть полезна, если транзакция, например, застряла в мемпуле из-за повысившейся нагрузки на сеть.

ZenGo заявляют, что уязвимые кошельки были спроектированы таким образом, что злоумышленник мог убедить жертву, например продавца, предоставить ему товар или услугу, в то время как транзакция всё ещё оставалась в обработке, после чего отменялась до включения в блокчейн. Хакеры могут совершать описанную процедуру циклически, отсюда и название уязвимости «Большой растратчик» (англ. – «BigSpender»).

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

Разработчики ZenGo пояснили, что наткнулись на баг, когда экспериментировали с функцией Replace-by-Fee для своего собственного кошелька, отметив, что намеренно не ищут уязвимости в программном обеспечении других команд. Обнаружив возможный вектор атаки, они решили проверить остальные кошельки и выяснили, что Ledger Live, BRD и Edge реализовали функцию Replace-by-Fee «некорректно».

Все три команды в разговоре с The Block подтвердили, что ZenGo связывались с ними, но не согласились с их терминологией.

«Повторное расходование ни разу не было успешно продемонстрировано ни в одном из случаев обмена информацией с ZenGo», – заявил технический директор BRD Сэмюэл Сатч.

По его словам, атаку следует причислять к типу «отказ в обслуживании», так как «из-за скомпрометированного конечного платёжного значения в кошельке пользователя его доступ к активам потенциально мог быть ограничен на несколько дней». BRD уже исправили проблему.

Технический директор Ledger Чарльз Гийем назвал уязвимость «всего лишь простым багом пользовательского интерфейса». Тем не менее, компания выпустит обновлённую версию Ledger Live, в которой появятся предупреждения о находящихся в обработке транзакциях.

В кошельках Edge проблема оказалась менее выраженной, так как в определённых случаях они могут неверно отображать остаток пользователя, но это решается повторной синхронизацией. В настоящее время ведётся подготовка фикса.

Будь в курсе! Подписывайся на Криптовалюта.Tech в Telegram.
Обсудить актуальные новости и события на Форуме