Bug na Ledger conectado com Mycelium poderia fazer com que você perdesse todos os seus fundos

Introdução

Descobri essa vulnerabilidade como parte do meu trabalho na Mycelium, em novembro de 2018. Com a ajuda de Leo Wandersleb, conseguimos localizar o problema e reportá-lo ao programa de recompensas de bugs de Ledger. Agora está consertado e passou tempo suficiente após o lançamento para divulgar detalhes.

Descrição breve

Se sua carteira da Mycelium foi comprometida, ela pode ter conseguido enganar sua Ledger Wallet enquanto você está enviando um pagamento e o valor restante (troco) é alterado para a carteira do invasor sem que nada indicasse que algo estava errado nas contas da sua Ledger.

(Somente para o propósito deste vídeo, criamos uma versão modificada de nossa carteira que nunca foi publicada ou até mesmo assinada para publicação).

Uma explicação um pouco mais breve

No meu trabalho como desenvolvedor na Mycelium, durante os nossos esforços para fornecer SegWit para os usuários da nossa carteira para Android, tivemos problemas em torno do nosso modo de gastos mistos em combinação com carteiras de hardware. As saídas de troco entrariam em uma conta diferente, dependendo de qual endereço você pagaria. Como pode ser visto nesta edição, esse foi na Trezor, menos na KeepKey, mas nenhum problema nas carteiras Ledger Blue e Ledger Nano S. A Ledger simplesmente aceitaria que o troco fosse enviada para a hardware wallet e sem perguntar ao usuário sobre sua confirmação. Ficamos um pouco surpresos e decidimos verificar quais caminhos de derivação (derivation paths) seriam enviados sem avisar o usuário, supondo que houvesse alguma proteção para evitar o que esta solicitação de pull realmente afirma corrigir. Mas as coisas ocorreram de maneiras muito mais interessantes: a carteira não se importava se as moedas fossem enviadas para um endereço de troco! a Ledger Wallet estava escondendo em segundo lugar – supostamente com um output de troco… (Você pode observar o código, que mudou, dê uma olhada no arquivo btchip_apdu_hash_input_finalize_full.c)

Então, na verdade, isso é tudo. Bem simples. Passe uma saída e outra. Passe caminho vazio e todos os fundos que você pode ver são seu e usuário se confirmaria isso.

Então. Tenho uma Ledger e tenho 1 bilhão de reais lá! Eu deveria estar preocupado?

Na verdade, você não deveria se você atualizou sua carteira para o firmware mais recente. A correção foi lançada em dezembro (é possível atualizar apenas o aplicativo BTC em vez de atualizar todo o firmware) e o firmware atualizado com o novo aplicativo BTC foi lançado em janeiro.

Atualização:
Se você não quiser atualizar o firmware e sua versão do aplicativo BTC estiver abaixo de 1.3.3, siga o guia do aplicativo de atualização do Ledger para atualizá-lo para a versão mais recente.

Escrito por: sergeylappo.github.io

Quer saber qual é a melhor carteira de hardware para você? veja nosso comparativo:

Guia definitivo – Ledger Nano S, Nano X, Trezor One e Trezor T – Qual a melhor?

PRODUTOS EM DESTAQUE!

-63%

Hardware Wallets

Trezor One

R$447,00
-40%

Hardware Wallets

Trezor T – Pré Venda

R$1.499,00
-53%
Lançamento

Hardware Wallets

Ledger Nano S Plus

R$799,00
-34%
Exclusivo
-40%

Hardware Wallets

Ledger Nano X

R$1.499,00
-100%
Lançamento
-50%
Exclusivo
-40%

Hardware Wallets

SecuX W20

R$599,00
-56%

Hardware Wallets

SecuX W10

R$397,00
Elementor PROWP RocketCrocoblockCheckout Woocommerce