Falha recém-descoberta em populares carteiras cripto pode enganar diversos usuários
Uma falha recém-descoberta em interfaces de usuário de serviços populares de carteira como Ledger Live, BRD e Edge possibilitou que invasores enganassem usuários em achar que haviam recebido bitcoin quando era mentira, segundo novo relatório da ZenGo, que também fornece serviços de carteira.
ZenGo alertou seus fornecedores de carteira sobre sua descoberta e concordou em mantê-la confidencial por 90 dias como parte de um processo formal de divulgação de informações. Esse período se encerrou ontem (1).
ZenGo considerou o ataque como uma “vulnerabilidade de duplo gasto” — uma alegação sobre a qual cada um dos fornecedores de carteira se recusou a comentar.
Aparentemente, o problema surgiu de um recurso do bitcoin chamado “Replace-by-Fee” (algo como “substitua com uma taxa”).
Basicamente, o recurso permite que usuários substituam uma transação que ainda não foi confirmada com outra transação que usa a mesma criptomoeda, mas acrescenta uma taxa de transação mais alta.
Isso pode ser útil quando uma transação ainda estiver no “mempool”, área de espera para transações não confirmadas. Uma taxa mais alta faria com que mineradores a confirmassem mais rápido.
Segundo ZenGo, devido à forma como as carteiras vulneráveis foram criadas, era possível que um invasor explorasse esse recurso para enganar uma vítima (um comerciante, por exemplo) em fornecer o bem ou serviço enquanto a transação que deveria pagá-lo ainda está em espera — apenas para cancelar a transação antes da rede confirmá-la.
Hackers podem fazer isso inúmeras vezes, segundo a equipe da ZenGo, que nomeou a vulnerabilidade como “BigSpender” (algo como “grande gastador”).
Geralmente, uma transação de bitcoin é considerada “em espera” até um número de blocos adicionais terem sido confirmados em cima do bloco onde a transação está.
O problema descoberto pela equipe da ZenGo diz respeito à interface de usuário.
As carteiras mais vulneráveis são as que não indicam ao usuário se a transação ainda não foi confirmada ou foi cancelada e, em vez disso, atualizam o saldo do usuário antes da hora para parecer que o novo pagamento está lá, disse Tal Be’ery, cofundador e gestor de pesquisa de segurança da ZenGo, em entrevista ao The Block.
A falha também expõe usuários a um tipo de ataque de negação de serviço (DDoS), que poderia resultar no “cálculo equivocado” do saldo em carteira, segundo o relatório da ZenGo.
De acordo com Be’ery, sua equipe “esbarrou” na falha enquanto testavam o recurso “Replace-by-Fee” para a sua própria carteira no setor de pesquisa e desenvolvimento (R&D). “Não estamos buscando por vulnerabilidades em outras carteiras”, disse ele.
De certa forma, o ataque descrito é parecido com um “race attack” (ou “ataque de corrida”), que também é baseado na enganação envolvendo transações não confirmadas.
Nesse caso, o invasor tenta enganar um comerciante ao fornecer um bem ou serviço gratuito ao transmitir duas transações simultâneas — uma ao comerciante e outra a uma outra carteira.
O objetivo é fazer com que mineradores confirmem primeiro a segunda transação e, assim, evitando que o comerciante seja pago pela primeira. Um “race attack” é considerado como um tipo de ataque de duplo gasto.
Quando souberam da vulnerabilidade “BigSpender”, Be’ery e seus colegas decidiram ver se ela existia em outras carteiras. Ele afirma que descobriram que as carteiras Ledger Live, BRD e Edge não implementaram o recurso Request-by-Fee “corretamente”.
Todas as três fornecedoras de carteira mencionadas no relatório confirmaram ao The Block que ZenGo entrou em contato com elas em relação aos possíveis riscos relacionados ao recurso.
Porém, todas negaram o possível uso de “duplo gasto” — que, tecnicamente, se refere a um ataque em que alguém gasta os mesmos bitcoins mais de uma vez — para descrever a possível invasão.
“Gastos duplos não foram demonstrados com sucesso em quaisquer comunicações da ZenGo”, escreveu Samuel Sutch, CTO da BRD, em e-mail ao The Block.
Sutch disse que na carteira BRD, a falha se manifestou como um ataque de negação de serviço que “permitiu que um parâmetro prejudicado de pagamento possivelmente negasse a um usuário o acesso a fundos em sua carteira por alguns dias”.
Sutch disse que, apesar do ataque “só ser possível em contextos elaborados”, BRD consertou a falha e pagou pela “caça a bugs” (ou “bug bounty”) à ZenGo por ter descoberto a falha.
Charles Guillemet, CTO da Ledger, disse que o problema era “apenas uma simples falha de UX [experiência de usuário]”, acrescentando que o possível ataque é mais “um tipo esperto de enganação”.
No entanto, Ledger Live lançou uma atualização que incluirá um alerta sobre transações pendentes e um novo banner que sinaliza ao usuário quando uma transação ainda estiver em espera para ser confirmada, disse ele.
Ledger também pagou uma quantia “bem pequena” à ZenGo, “assim como fazemos com participantes de caças a bugs”, disse Guillemet, acrescentando: “queremos enfatizar que nossas carteiras de hardware não foram afetadas por essa falha na interface de usuários e os fundos dos usuários estão seguros”.
Enquanto isso, no caso da Edge, o problema foi “mais sutil”, segundo a ZenGo. Em alguns casos, a carteira calculou errado o saldo de um usuário, mas o problema pode ser solucionado ao clicar em um botão que “ressincroniza” a carteira.
Paul Puey, CEO e cofundador da Edge, contou ao The Block por e-mail que a ZenGo havia contado à sua empresa sobre “uma questão geral em relação a transações (com Request-by-Fee)”.
Puey também compartilhou sua resposta à equipe da ZenGo, dizendo que a carteira Edge “deixa muito óbvio” que a transação de um usuário ainda está pendente.
Puey também disse que a Edge estava trabalhando para consertar um problema em que a carteira falhava em cancelar uma transação pendente mesmo quando foi cancelada da rede. “Enquanto isso, um usuário precisa ressincronizar a carteira para remover a transação”, disse ele.