Detalhes das atualizações de firmware para a Trezor One (v1.9.1) e Trezor Model T (v2.3.1)

Nesta quarta-feira, estamos lançando a atualização de firmware 1.9.1 para Trezor One e 2.3.1 para dispositivos Trezor Model T. Além de algumas tarefas internas de refatoração, o principal motivo para entregar as atualizações é corrigir uma vulnerabilidade de segurança encontrada por Saleem Rashid. O bug foi relatado por meio de nosso programa de divulgação responsável e agradecemos a Saleem por mais uma grande contribuição.

Possível taxa de transação grande via duas transações Segwit

Introdução

Para transações que não sejam Segwit, a Trezor sempre exige que a transação anterior verifique o saldo real do UTXO. Por quê? Um invasor pode alegar que o saldo do UTXO é menor do que realmente é. Como você deve saber, a diferença entre os valores de input e output é considerada como a taxa de transação na rede Bitcoin. Isso significa que o usuário pagaria uma taxa significativamente maior sem realmente saber. É por isso que a Trezor exige que a transação anterior verifique o valor real.

Isso é verdade para transações que não sejam Segwit e essa verificação estava em vigor desde o início. Com a introdução do Segwit, os desenvolvedores do Bitcoin tentaram simplificar isso. Ao assinar uma transação Segwit, um dado ligeiramente diferente está sendo assinado. Isso é definido no BIP-143 e uma das mudanças foi que a quantidade de UTXO está presente nos dados assinados. Isso ajuda significativamente; se o atacante mentir sobre o valor do UTXO, a assinatura simplesmente não é válida na rede Bitcoin.

Vulnerabilidade

Saleem encontrou uma maneira inteligente de contornar isso. Considere este cenário:

  1. A vítima tem dois UTXOs SegWit/BIP-143 de 15 BTC e 20 BTC.

Observe que essa vulnerabilidade é inerente ao design do BIP-143 e é sugerida na proposta Taproot descrita no BIP-341 (Fundamentação, nota 17 ). Essa falha afeta todos os fornecedores de carteira de hardware, alguns dos quais solicitaram 90 dias para implementar a solução. É por isso que demoramos mais do que o habitual para liberar essa correção, porque respeitamos as regras da divulgação coordenada.

Conserto

A correção é simples – precisamos lidar com as transações Segwit da mesma maneira que fazemos com as transações que não são non-Segwit. Isso significa que precisamos exigir e validar os valores UTXO das transações anteriores. É exatamente isso que estamos introduzindo nas versões de firmware 2.3.1 e 1.9.1.

Terceiros

Infelizmente, algumas ferramentas de terceiros não permitem que carteiras físicas obtenham a transação anterior no caso de entradas SegWit, motivo pelo qual a Trezor não poderá assinar transações usando essas ferramentas até que sejam atualizadas para funcionarem corretamente. Devido ao processo de divulgação responsável, não fomos capazes de informar os mantenedores antecipadamente.

Aplicativos baseados na Web

Os aplicativos que usam o Trezor Connect versão 8 continuarão funcionando perfeitamente.

Se você encontrar problemas no seu aplicativo Web ativado pelo Trezor favorito, informe aos desenvolvedores que eles devem atualizar para o Connect v8.

Electrum

Estamos fornecendo um patch para a Electrum com um pull request #6198. Será impossível usar o Electrum com o Trezor 1.9.1 e 2.3.1 até que este patch seja lançado.

Ferramentas baseadas em PSBT

Esta seção é preocupante para os usuários da carteira HWI, BTCPay Server e Wasabi, pois todas essas ferramentas estão internamente usando o formato BIP-174 PSBT.

O formato PSBT permite especificar a transação anterior completa ou apenas a saída anterior. Este último é recomendado para inputs SegWit. Para corrigir o problema de segurança, é necessário ignorar esta recomendação e fornecer transações anteriores completas em todos os casos.

Um bug no HWI (issue nº 338) deve ser corrigido para enviar corretamente a transação anterior ao Trezor. Posteriormente, serão necessárias modificações no BTCPay Server ( issue nº 1631 ) e Wasabi (issue nº 3734).

Timeline

  • 2020–03–03 – problema relatado por Saleem Rashid, é necessária coordenação com outros fornecedores

Escrito por: blog.trezor.io