Bitcoin wallet bug let rogue servers steal funds when users tried to speed up payments
Уязвимость в системе безопасности биткоин-кошелька позволяла злоумышленным серверам обманывать пользователей, заставляя их подписывать платежи, предназначенные для атакующих, когда они пытались ускорить транзакции. Разработчики подтвердили, что по крайней мере в одном случае были украдены средства.
Electrum, один из старейших программных кошельков для биткоина, сообщил об этой уязвимости в субботу, заявив, что некоторые серверы уже используют ее. Разработчики получили два отчета в октябре, в том числе один от пользователя, который потерял средства после подтверждения того, что казалось обычным увеличением комиссии за транзакцию.
Атака использовала способ обработки биткоин-платежей, которые еще не были подтверждены сетью.
В отличие от полноценного узла Bitcoin, Electrum полагается на внешние серверы для получения истории транзакций и отправки платежей. До исправления уязвимости кошелек доверял этим серверам предоставление информации о ожидающих транзакциях, не проверяя их подписи.
Злоумышленник, контролирующий один из этих серверов, мог перехватить платеж до того, как он достиг сети Bitcoin, и заменить его в истории кошелька поддельной транзакцией. Эта подделка переводила средства пользователя на адрес, контролируемый злоумышленником, используя недействительные подписи, которые Electrum не смог обнаружить.
Однако кошелек затем отображал поддельную транзакцию как ожидающую подтверждения, и ловушка срабатывала, когда пользователи пытались ускорить процесс.
Bitcoin позволяет заменять неподтвержденные транзакции на версии с более высокой комиссией, что называется "Replace-by-Fee". Если пользователь выбирал эту опцию, Electrum мог использовать мошенническую транзакцию и подписать действительную замену, отправляя средства злоумышленнику.
В одном из задокументированных случаев мошенническая транзакция вообще не содержала комиссии, что создавало впечатление, будто она застряла. Злоумышленники также создавали адреса для получения средств, последние четыре символа которых совпадали с легитимным адресом получателя, что затрудняло обнаружение подмены при быстрой проверке.
Первый отчет, представленный 11 октября, касался многоподписного кошелька (2 из 3), использующего два аппаратных устройства Trezor. Пользователь проверил легитимный платеж на обоих устройствах, но позже заметил другую исходящую транзакцию в истории кошелька (пользователь не сообщил о потере средств).
Второй пользователь сообщил 18 октября, что увеличил комиссию за подмененную транзакцию и потерял деньги. Разработчики не сообщили о сумме украденных средств и не идентифицировали вредоносные серверы.
В ответ Electrum выпустил версию 4.8.3 24 октября, добавив проверку подписей для неподтвержденных транзакций, использующих средства из кошелька пользователя. Однако более ранние версии остаются уязвимыми для этой атаки при подключении к вредоносным серверам.
Разработчики рекомендуют обновить программное обеспечение и проверять адреса и суммы получателей перед подписанием платежей. Пользователи, подключенные только к серверам, которым они доверяют, включая собственные, не подвергались этой атаке.
Исправление было выпущено через шесть дней после первого сообщения о краже.