Os criadores da carteira em papel de criptomoedas WalletGenerator.net rodaram um código que gerava as mesmas chaves privadas para múltiplos usuários. A vulnerabilidade foi descrita em um post do pesquisador em segurança Harry Denley no MyCrypto em 24 de maio.

De acordo com o post, o código defeituoso estava em vigor em agosto de 2018, e só foi recentemente corrigido em 23 de maio. O código ativo no site seria open source e auditado no GitHub, mas houve diferenças detectadas entre os dois. Depois de pesquisar o código, Denley concluiu que as chaves foram geradas de forma determinista na versão ao vivo do site, não aleatoriamente.

Em um dos testes do MyCrypto, entre 18 e 23 de maio, eles tentaram usar o gerador em massa do site para gerar 1.000 chaves. A versão do GitHub retornou 1.000 chaves exclusivas, mas o código no ar retornou 120 chaves. A execução do gerador em massa sempre voltou com 120 chaves exclusivas em vez de 1.000, mesmo quando outros fatores eram alterados, incluindo atualizações do navegador, alterações de VPN ou alterações do usuário.

A aleatoriedade é necessária para gerar os pares de chaves para que as carteiras de papel fiquem seguras. Como o post diz:

“ELI5: Ao gerar uma chave, você pega um número super-aleatório, transforma-o na chave privada e o transforma na chave pública / endereço. No entanto, se o número 'super-aleatório' for sempre '5', a chave privada gerada será sempre a mesma. É por isso que é tão importante que o número super-aleatório seja aleatório ... não '5'”

O WalletGenerator corrigiu o problema do determinismo depois que o MyCrypto entrou em contato no meio de sua investigação. WalletGenerator supostamente respondeu depois dizendo que as alegações não puderam ser verificadas, e até mesmo perguntou ao correspondente se MyCrypto era um "site de phishing".

O MyCrypto ainda adicionou que os usuários que geram pares de chaves após 17 de agosto de 2018 devem transferir imediatamente seus fundos para uma carteira diferente e recomenda-se não usar o Wallet Generator.net.

Como já publicado pelo Cointelegraph, um chamado "blockchain bandit" fugiu com cerca de 45.000 ether (ETH), decifrando chaves privadas fracas na blockchain Ethereum.