No Electrum, acelerar um pagamento travado podia mandar o dinheiro para o atacante
O pagamento não saía. A carteira mostrava a transação ainda pendente, o dono aumentou a taxa para destravar e o dinheiro foi para um endereço que ele não escolheu. O aviso de segurança do Electrum, divulgado em 24 de outubro com classificação de gravidade alta, diz que o caminho já foi usado por servidores maliciosos contra usuários. Pelo menos uma pessoa perdeu dinheiro.
A falha alcança todas as versões anteriores à 4.8.3, e a 4.8.3 traz o conserto, marcado no código em 23 de outubro e publicado em binários no dia seguinte. Quem usa a carteira, que existe desde 2011, pode instalá-la em Windows, macOS, Linux ou Android.
O servidor decide o que a carteira mostra
O Electrum não guarda uma cópia da blockchain. Para exibir saldo e transações pendentes, consulta um servidor. Essa dependência é parte do projeto e está documentada no próprio aviso. Quando o servidor mente, a tela repete a mentira.
O ataque começa no envio de um pagamento. O servidor malicioso segura a transação, que nunca chega à rede de bitcoin. No lugar dela, grava no histórico uma transação parecida, que gasta as mesmas moedas e manda o dinheiro para um endereço do atacante. As assinaturas, que provam a autorização do dono das moedas, eram inválidas, e nenhum nó da rede aceitaria aquele envio. Nenhuma checagem era feita nesse ponto, e a fraude aparecia como a transação em andamento. O envio verdadeiro, preso no servidor, não aparecia.
Uma das transações falsas saiu sem taxa. Na avaliação dos desenvolvedores, foi montada na expectativa de que o usuário, diante de um pagamento que não andava, aumentasse a taxa. O usuário aumentou, e o Electrum assinou um envio válido, com taxa maior, para o endereço do atacante.
Dois usuários relataram o problema. Nos dois relatos, os quatro últimos caracteres do endereço forjado repetiam os do destino que a vítima queria pagar. A semelhança foi montada de propósito. Um dos relatos é assinado Raju-K12, nome que aparece nos créditos da versão 4.8.3. O valor desviado não foi divulgado, e os servidores usados no ataque também não.
A checagem que entrou e a que ficou fora
A versão 4.8.3 confere as assinaturas das transações pendentes que gastam moedas da própria carteira antes de incluí-las no histórico. A transação forjada não passa por esse teste. O aviso reconhece o limite da correção. Recebimentos seguem sem validação, porque o programa não carrega um interpretador completo das regras do bitcoin. Cobrir esse lado exigiria conferir também as transações anteriores que financiam cada entrada, em uma corrente que só termina em uma transação já minerada.
Quem usa um servidor próprio, ou se conecta apenas a servidores confiáveis, não foi atingido pelo ataque. Para quem ainda não atualizou, a orientação é conferir endereço e valor na tela antes de assinar qualquer transação, com aumento de taxa ou sem.
A Sparrow Wallet, também de bitcoin, tratou de risco parecido em agosto. A versão 2.5.4 passou a checar se as transações devolvidas por servidores Electrum são exatamente as que a carteira pediu. O pacote incluía dezenas de outras correções de segurança.
O caso se soma a um ano de perdas em carteiras. Em agosto, uma falha no gerador de sementes das Coldcard acompanhou prejuízos acima de US$ 88 milhões. Um rastro de US$ 86,9 milhões, divulgado neste mês, reuniu 98 endereços ligados a usuários da Ledger. A fabricante francesa não se pronunciou sobre o caso.
A primeira denúncia privada é de 11 de outubro, quando o caminho do aumento de taxa ainda não tinha sido percebido. No dia 18, o usuário que perdeu dinheiro fez o relato. O conserto foi fechado no código em 23 e divulgado em 24, no mesmo dia em que saíram os binários.
⚠️ Aviso importante
As informações aqui descritas refletem pesquisas realizadas pelo LaboNews e não devem ser consideradas recomendação de investimento ou endosso de segurança sobre ferramentas ou links externos. Recomendamos que, ao investir ou utilizar ferramentas de terceiros, você faça sua própria pesquisa sobre a segurança e os riscos envolvidos.