Кошелёк Bitcoin Electrum устранил критическую уязвимость, перенаправлявшую платежи злоумышленникам
Ключевые выводы
- •Electrum 4.8.3, выпущенная 24 октября, исправляет высокоопасную уязвимость, которая позволяла вредоносным серверам отображать поддельные транзакции и перенаправлять платежи с повышенной комиссией на адреса злоумышленников.
- •Уязвимость была связана с тем, что Electrum не проверяла подписи неподтверждённых транзакций, получаемых от серверов, из-за чего поддельные платежи с нулевой комиссией выглядели зависшими в истории пользователя.
- •В рекомендации по безопасности говорится, что некоторые серверы проводили атаку в реальных условиях; один пользователь сообщил о подтверждённой потере 18 октября после повышения комиссии подделанной транзакции.
- •Патч проверяет криптографические подписи входов, принадлежащих кошельку, прежде чем добавлять неподтверждённые транзакции в историю, при этом входящие транзакции от внешних отправителей по-прежнему принимаются без проверки подписей.
- •Пользователи версий до 4.8.3 остаются под угрозой и должны обновиться или вручную проверять адреса получателей; те, кто подключается исключительно к собственным серверам, атаке не подвержены.

Кошелёк Bitcoin Electrum выпустил 24 октября версию 4.8.3 с патчем для высокоопасной уязвимости, которая позволяла вредоносным серверам внедрять поддельные транзакции и обманным образом заставлять пользователей платить на адреса злоумышленников.
Уязвимость затрагивает все версии кошелька до 4.8.3, которая уже доступна. По меньшей мере один пользователь подтвердил потерю средств в результате этой атаки.
Как работает атака
Согласно рекомендации по безопасности, опубликованной разработчиком Electrum под псевдонимом SomberNight, атака эксплуатирует модель доверия кошелька в отношении неподтверждённых транзакций. Когда пользователь отправляет платёж через скомпрометированный сервер, сервер может заблокировать настоящую транзакцию и внедрить поддельную конфликтующую — с адресом получателя злоумышленника и нулевой комиссией, из-за чего платёж выглядит зависшим.
Поскольку Electrum не проверяет подписи неподтверждённых транзакций, полученных от сервера, подделка отображается в истории кошелька как легитимная. Когда пользователь повышает комиссию платежа, который выглядит застрявшим, он подписывает и отправляет в сеть совершенно новую корректную транзакцию — адрес получателя которой принадлежит злоумышленнику. Исходный платёж так и не был отправлен; транзакция с повышенной комиссией оказывается первой, реально достигшей сети, и она платит злоумышленнику.
Повышение комиссии — стандартная практика в Bitcoin, обычный способ «подтолкнуть» зависший платёж, поэтому подделка превращает рутинное действие в момент, когда средства перенаправляются. Именно нулевая комиссия, показанная на поддельной транзакции, создаёт впечатление зависшего платежа.
SomberNight отметил, что злоумышленники могут подбирать адрес получателя поддельной транзакции так, чтобы он совпадал с последними четырьмя символами адреса, указанного пользователем. Тому, кто проверяет лишь окончание длинного Bitcoin-адреса, совпадение покажется подлинным.
Атака подтверждена в реальных условиях
В рекомендации говорится, что «некоторые серверы проводят эту атаку в реальных условиях», что подтверждено двумя сообщениями пользователей. Пользователь под именем dannydeezy впервые сообщил о подозрительном поведении сервера 11 октября; поддельная транзакция так и не вышла за пределы локального сервера, и средства потеряны не были. Второй пользователь, Raju-K12, сообщил о подтверждённой потере 18 октября после повышения комиссии подделанной транзакции.
Что меняет патч
Исправление в 4.8.3 закрывает основную поверхность атаки, проверяя криптографические подписи входов, принадлежащих кошельку, прежде чем добавлять какую-либо неподтверждённую транзакцию в локальную историю. Сервер больше не может внедрить поддельную транзакцию, затрагивающую собственные адреса пользователя, без действительных подписей — которые злоумышленник не может подделать. Исправление было помечено в репозитории 23 октября, а сборки опубликованы на следующий день на официальной странице релиза.
Входящие транзакции от внешних отправителей — где ни один из входов не принадлежит кошельку пользователя — по-прежнему принимаются без проверки подписей. SomberNight признал этот оставшийся пробел в рекомендации, отметив, что его устранение потребует дополнительной работы. Как и когда Electrum распространит эту проверку на внешние транзакции — главный открытый вопрос, за которым стоит следить в будущих релизах.
Привычная цель
Electrum, один из старейших программных кошельков для Bitcoin, уже сталкивался с вредоносными кампаниями. Атака, начавшаяся в 2018 году, использовала поддельные серверы для рассылки фальшивых уведомлений об обновлении, и к 2020 году у пользователей Electrum было похищено, по оценкам, 25 миллионов долларов.
Открытая серверная модель кошелька — узел может запустить любой — и делает возможной атаку такого класса. Electrum — лёгкий клиент, полагающийся на внешние серверы для данных блокчейна, а не загружающий всю цепочку; этот компромисс обеспечивает скорость кошелька, но помещает его безопасность в серверную модель доверия, на которую и была направлена данная уязвимость. Пользователи, подключающиеся исключительно к собственному серверу, атаке не подвержены.
Все, кто всё ещё использует версию до 4.8.3, остаются под угрозой, а те, кто не может обновиться немедленно, должны вручную проверять адреса получателей и суммы перед подписанием любой транзакции. Electrum 4.8.3 доступна на electrum.org и в GitHub-репозитории проекта.