Falta de segurança das carteiras físicas multi-assinadas

O uso de um sistema de multi-assinaturas (multisig) para adicionar um fator a mais de segurança aos fundos da carteira vem ganhando muito espaço dentre usuário pouco experientes. Nesse sistema, o usuário – teoricamente – teria maior segurança no armazenamento dos seus fundos, visto que passaria a ter mais de um pilar de segurança para seus ativos.

Mas, muito pelo contrário, esse sistema pode trazer um ponto a mais de falha e insegurança, inclusive abrindo mão de toda a segurança obtida por uma Hardware Wallet.

Combinar carteiras de hardware de vários fornecedores é uma estratégia popular para minimizar o risco de um único ponto de falha, por exemplo, uma vulnerabilidade séria em uma das carteiras envolvidas. Infelizmente, uma carteira de hardware fraca pode comprometer toda a configuração.

Eu trabalho na carteira de hardware BitBox02. Na época em que avaliamos pela primeira vez como adicionar suporte multisig de maneira adequada, nos deparamos com inúmeras armadilhas e problemas de segurança relacionados a como as pessoas usam carteiras de hardware para proteger suas moedas em uma configuração multisig. Nessa postagem do blog resumimos uma de nossas postagens mais populares.

Esta postagem é uma análise aprofundada deste pequeno, mas há um ponto extremamente importante do artigo original:

“Your hardware wallet should verify, or let you verify, the following information provided by the untrusted computer: […]

 
* The xpubs of the cosigners in order to prevent an attacker from swapping them”
ou seja:
Sua carteira de hardware deve verificar, ou permitir que você verifique, as seguintes informações fornecidas pelo computador não confiável: […]
 
* Os xpubs dos fiadores para evitar que um invasor os troque

O escopo desta postagem é limitado a configurações em que você usa várias carteiras de hardware e as administra usando um único computador (ou telefone celular).

Minha suposição padrão é que seu computador já está comprometido. A principal proposta de valor das carteiras de hardware é proteger contra isso. Se o seu computador fosse seguro para uso, haveria poucos motivos para usar carteiras de hardware em primeiro lugar.

O problema

Existem muitos tutoriais sobre como configurar multisig com carteiras de hardware. Devido à natureza complicada disso, todos eles ignoram a verificação xpub, não podem executá-la devido à falta de suporte de carteira de hardware ou simplesmente o fazem incorretamente. Qualquer um desses deixa a porta aberta para que um invasor faça o mal.

Uma rápida recapitulação: um xpub, abreviação de chave pública estendida, é usado para derivar todos os endereços em uma conta. No caso do multisig, um limite e um xpub por co-signatário são combinados para gerar endereços multisig.

Vamos primeiro discutir o que pode dar errado se os xpubs não forem verificados corretamente.

Depois disso, vou mostrar que, apesar de seus melhores esforços, você provavelmente não terá verificado os xpubs corretamente se usar apenas um computador.

Roubos

Os usuários de carteiras de hardware são bem treinados para confiar na tela do dispositivo. Se a tela do dispositivo mostrar algo, deve ser seguro usá-lo.

Isso não é verdade para endereços de recebimento multisig.

Um endereço multisig é derivado do multisig threshold e todos os xpubs de co-signatários. Uma carteira de hardware pode verificar silenciosamente seu próprio xpub. Os outros xpubs são fornecidos pela carteira do computador, por exemplo, Electrum.

Uma carteira de computador comprometida pode fornecer xpubs de fiador falsos para a carteira de hardware. Por exemplo, em um multisig 2 de 3, a carteira comprometida fornecerá dois xpubs controlados pelo invasor. Depois de verificar o endereço de recebimento comprometido, todos os fundos enviados a ele pertencem ao invasor.

Uma medida de segurança comum que as pessoas fazem é testar primeiro a configuração do multisig: receber uma pequena quantia, gastá-la e, se tudo funcionar, enviar os grandes fundos. Infelizmente, isso não pode impedir esse ataque de roubo. Um computador comprometido pode simular todo o procedimento de recebimento e gasto do valor do teste, incluindo a verificação em todas as carteiras de hardware. Mais detalhes sobre isso em uma postagem futura no blog.

Possíveis maneira de mitigar isso:

  • Comparando que o mesmo endereço é mostrado em cada carteira de fiador. Isso geralmente não é viável, por exemplo, em uma configuração 2 de 3, o terceiro dispositivo pode estar em um local remoto.
  • Verificação xpub adequada. Eu irei explicar porque isso é quase impossível em breve.

Ataque de resgate

Em um ataque de resgate, o atacante não rouba as moedas, mas controla seu acesso a elas. Ao bloquear suas moedas, o invasor pode negociar um pagamento para liberar os fundos de volta para você.

Um exemplo simples funciona exatamente como o ataque de roubo descrito acima, mas com um multisig 2 de 2 em vez de um multisig 2 de 3. Se um xpub pertence a você e outro xpub pertence ao invasor, é necessária a cooperação de ambas as partes para liberar todas as moedas enviadas para esta conta.

Um ataque mais sutil explora seus backups.

“Você sabia que em uma configuração multisig Bitcoin 2 de 3, você precisa de todos os três pubkeys para recuperar seus fundos, não apenas dois deles?”

Para poder restaurar uma carteira multisig 2 de 3, o threshold e todos os xpubs de co-signatários precisam ser conhecidos. É uma prática recomendada armazenar todas essas informações junto com o backup de cada fiador. Em seguida, você pode restaurar uma carteira mesmo se uma semente do fiador estiver permanentemente perdida ou inacessível, usando as chaves privadas dos outros dois fiadores e todos os três xpubs.
 
Em todos os tutoriais multisig e todas as configurações multisig que testemunhei ou revisei, na melhor das hipóteses, o backup xpub foi criado copiando os xpubs conforme fornecido pela carteira do computador (por exemplo, copiando-os em um arquivo de texto para impressão).
 
Um computador comprometido pode, neste momento, exibir xpubs falsos. Mesmo que apenas um xpub esteja incorreto, seu backup está comprometido.
 
Se você alguma vez se encontrar em uma situação em que precise restaurar sua configuração 2 de 3 multisig usando dois de três backups de fiador, você está com problemas. Em teoria, as duas sementes de fiador e os três xpubs salvos junto com eles devem ser suficientes para recuperar o acesso aos seus fundos. Se, no entanto, os xpubs no backup estiverem incorretos, você não poderá recuperar. A carteira restaurada a partir deste backup seria uma carteira vazia e errada. O invasor é o único que pode ajudá-lo a se recuperar.
 
Para criar backups válidos, deve-se ter certeza de que os xpubs impressos em papel correspondem aos xpubs conforme mostrado nas telas da carteira de hardware. Dependendo das carteiras de hardware envolvidas, isso é muito difícil ou impossível de se conseguir.

Conclusão e recomendações

Multisig é complicado. Quase um ano após o lançamento do aritgo sobre as armadilhas do multisig, minha conclusão ainda é a mesma: as armadilhas de verificação, backup e UX podem muito bem significar que o multisig é menos seguro na prática do que a assinatura única. Ainda existem muitas footguns na configuração, uso e backup / recuperação de carteiras multisig.
 
Uma dessas armas é a falta de verificação xpub do fiador. O problema mais urgente é a incapacidade de verificar o xpub de um dispositivo sob demanda, o que pode levar a roubos remotos ou ataques de resgate. Exorto todos os fornecedores de carteiras de hardware a implementarem essa funcionalidade e a expô-la em carteiras multisig como Electrum, a fim de reduzir a dificuldade de verificar corretamente os xpubs.
 
Se você ainda deseja usar multisig com carteiras de hardware, recomendo usar vários BitBox02s e seguir este tutorial cuidadosamente. Realize os procedimentos por sua própria conta e risco.
 
Se você insiste em combinar carteiras de hardware de vários fornecedores, recomendo verificar cada endereço de recebimento em todas as carteiras de hardware, sempre pela tela do dispositivo. Isso exclui o razão, pois o razão não parece ser capaz de mostrar um endereço de recebimento multisig para verificação. Além disso, recomendo testar o backup e a recuperação em um computador separado e independente.

Fonte: https://shiftcrypto.ch/