banner
Centro de notícias
Nosso serviço online está disponível 24 horas por dia.

Vulnerabilidade de aborto Lindell17 [CVE

Nov 08, 2023

Esta vulnerabilidade permite que um invasor extraia uma chave privada completa de uma carteira que implementa o protocolo Lindell17 2PC, extraindo um único bit em cada tentativa de assinatura (256 no total). Coinbase WaaS, Zengo e outras bibliotecas foram corrigidas.

A equipe de pesquisa da Fireblocks encontrou uma vulnerabilidade em implantações reais do protocolo Lindell17-ECDSA. A vulnerabilidade foi encontrada na interface entre o protocolo e a infraestrutura de segurança mais ampla, e todos os produtos de segurança baseados em Lindell17 são potencialmente afetados. Encontramos vários provedores de carteira como serviço, carteiras de varejo e bibliotecas de código aberto que eram vulneráveis ​​a esse ataque em vários graus de exploração.

A exploração se origina de implementações do Lindell17 que se desviam das especificações do artigo acadêmico e ignoram ou tratam incorretamente os abortos em caso de falha nas assinaturas. Assumindo acesso privilegiado por parte do invasor, a vulnerabilidade pode ser explorada para exfiltrar a chave após aproximadamente 200 solicitações de assinatura. A vulnerabilidade provou ser prática e validada em bibliotecas populares de código aberto e em alguns sistemas do mundo real.

As implementações práticas do protocolo para carteiras muitas vezes encontram um dilema difícil: interromper as operações após uma falha na assinatura, o que poderia potencialmente resultar em fundos bloqueados, ou continuar com o processo de assinatura, arriscando assim a exposição de bits de chave adicionais com cada assinatura.

A vulnerabilidade foi inicialmente descoberta na carteira ZenGo e depois verificada na biblioteca Coinbase Wallet as a Service (WaaS), com provedores de carteira e bibliotecas adicionais impactados. Também foi validado com um POC funcional em uma implementação comum de código aberto do protocolo (link abaixo). Tanto a Coinbase quanto a ZenGo mitigaram o problema prontamente como parte de nosso processo de divulgação responsável e nos garantiram que verificaram e nenhuma carteira foi explorada.

A vulnerabilidade permite a extração completa da chave privada, permitindo que os invasores roubem todos os fundos da carteira criptografada. Contudo, é uma vulnerabilidade assimétrica, o que significa que o atacante deve corromper uma parte específica para montar o ataque (ou seja, as partes não são indistinguíveis em termos do ataque).

Para elaborar, o protocolo Lindell17 é normalmente empregado para carteiras que envolvem um provedor de carteira e um usuário final, com a chave secreta subjacente distribuída entre os dois. Além disso, existem duas configurações possíveis para a carteira: ou o provedor da carteira (Serviço) finaliza a assinatura, ou o usuário final (Cliente) o faz no final do protocolo. A parte encarregada de finalizar a assinatura é quem está em risco, e um invasor pode explorar essa vulnerabilidade comprometendo a contraparte.

Caso 1.Servidor finaliza a assinatura

Neste caso, o invasor pode exfiltrar a chave comprometendo o Cliente e enviando mensagens maliciosas em seu nome. Especificamente, o invasor pode iniciar duzentas transações de modo que, em cada sessão de assinatura, o invasor crie uma mensagem maliciosa diferente que resultará em uma assinatura válida apenas se o bit alvo do compartilhamento secreto do servidor for igual a zero.

Assim, dependendo se o Servidor finaliza ou não a assinatura (o invasor obtém essa informação porque a assinatura aparece ou não no Blockchain, ou o próprio Servidor notifica o invasor), o invasor obtém um pouco do compartilhamento do Servidor . Eventualmente, ele pode recuperar a chave por completo após 256 assinaturas.

Devemos observar que o ataque acima poderia ser acelerado se as solicitações de assinatura pudessem ser “blitzed” (iniciadas rapidamente uma após a outra), o que normalmente é possível porque o servidor geralmente é automatizado e não limita significativamente o número de assinaturas.

Caso 2.Cliente finaliza a assinatura

No segundo caso, ao comprometer o Servidor e executar o ataque acima ao contrário, o invasor pode extrair a chave de forma análoga.