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:
- A vítima tem dois UTXOs SegWit/BIP-143 de 15 BTC e 20 BTC.
- O malware solicita que o usuário confirme uma transação com 1 input com 15 BTC e o 2° output com 5.00000001 BTC, com os outputs escolhidos pelo usuário e um output de troco válido, se necessário.
- O usuário confirma a transação, gastando 20 BTC mais 0,00000001 de taxa BTC.
- O malware gera um erro e diz ao usuário para confirmar a transação novamente (por exemplo, “Uh, oh! Algo deu errado. Por favor, tente novamente.”).
- O malware solicita que o usuário confirme uma transação com 1 input com 0,00000001 BTC e a entrada 2 com 20 BTC, com exatamente as mesmas saídas de antes.
- O usuário vê uma transação aparentemente idêntica e novamente confirma gastar 20 BTC mais 0,00000001 de taxa BTC.
- O malware usa a assinatura da entrada 1 da primeira transação e a assinatura da entrada 2 da segunda transação, criando uma transação que de fato gasta 15 BTC da entrada 1 e 20 BTC da entrada 2.
- O usuário acaba pagando uma taxa de transação de pouco mais de 15 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
- 2020-06-06 – atualização de firmware 1.9.1 para Trezor One lançada
- 2020-06-06 – atualização de firmware 2.3.1 para Trezor Model T lançada
Escrito por: blog.trezor.io
Sobre a Trezor
Criado pela SatoshiLabs em 2014, a Trezor One é a carteira de hardware original e mais confiável do mundo. Ela oferece segurança inigualável para criptomoedas, gerenciamento de senhas e serve como o segundo fator na autenticação de dois fatores. Esses recursos combinam com uma interface fácil de usar, seja você um especialista em segurança ou um novo usuário.
A Trezor Model T é a carteira de hardware da próxima geração, projetada com os benefícios da Trezor original em mente, combinada com uma interface moderna e intuitiva para maior experiência e segurança do usuário. Ela possui uma tela sensível ao toque, processador mais rápido e suporte avançado a moedas, bem como todos os recursos do Trezor One.