Endereços de Bitcoin gerados com uma biblioteca que tem falhas são expostos a força bruta

Uma série de vulnerabilidade na função SecureRandom() acaba expondo endereços de carteira gerados por esta biblioteca com problemas a ataques de força bruta.

E isto pode ser um problema pois diversos endereços de carteira Bitcoin gerados em navegadores ou por meio de aplicativos baseados em Javascript podem ser afetados por esta vulnerabilidade que pode ser explorada por invasores para roubar saldos.

Segundo os especialistas a popular biblioteca Javascript SecureRandom() não é aleatoriamente segura o que significa que o atacante pode atacar através de força bruta chaves privadas.

A falha afeta a função da biblioteca Javascript SecureRandom() que promete gerar um endereço de Bitcoin aleatório e sua chave privadas … mas, na prática, isto não vinha acontecendo.

“Ele irá gerar chaves criptográficas que, apesar de seu comprimento, possuem menos de 48 bits de entropia, [..] então sua saída não terá mais de 48 bits de entropia mesmo que sua semente tenha mais que isso”, disse o administrador de sistema David Gerard.

“A SecureRandom() então executa o número que passa pelo algoritmo obsoleto RC4, que é conhecido por ser mais previsível do que deveria ser , ou seja, menos bits de entropia”, acrescentou Gerard. “Assim sua chave é mais previsível”.

Gerard concluiu que todos os endereços Bitcoin gerados usandos a função SecureRandom() são vulneráveis a ataques de força bruta.

“A conclusão parece ser que pelo menos todas as carteiras geradas pela ferramantas js dentro dos navegadores desde que o Bitcoin existe em 2011 são impactadas por esta fraqueza do Math.random se aplicável as implementações relacionadas, a fraqueza do Math.random ou RC4 ( Chrome ) entre 2011 e 2013 e RC4 com fraqueza para usuários do Chrome até o final de 2015”, continua Gerard.

Gerard explicou que vários aplicativos de carteira baseados na web ou do lado do cliente que usavam a função SecureRandom() estariam com problemas. O endereços de Bitcoin que possivelmente estão vulneráveis são :

  • BitAddress pré-2013;
  • bitcoinjs antes de 2014;
  • Qualquer software atual que use repositórios antigos encontrados no GitHub.

Um usuário lançou o mesmo alerta na lista de discussão da Linux Foundation.

“Um número significativo de produtos de criptomoedas anteriores e atuais que contém uma classe Javascript chamada SecureRandom() contendo tanto a coleta de entropia e um PNRG. A coleta de entropia e o próprio RNG são deficientes no grau que o material chave pode ser recuperado por terceiros com complexidade média”, diz o alerta.

O pesquisador Mustafa Al-Bassam acrescentou que várias implementações para aplicativos de carteira Bitcoin na Web e do lado do cliente usaram a biblioteca criptográfica jsbn.js para gerar endereços Bitcoin.

Infelizmente a biblioteca jsbn.js usou a função SecureRandom() o que torna as chaves geradas expostas ao ataque que estamos falando aqui.

“O aviso original não continha nenhuma informação sobre a biblioteca em questão, então fiz algumas pesquisas”, acrescenta Mustafa.

“Acho que a divulgação da vulnerabilidade está se referindo a uma versão pré-2013 da jsbn, uma biblioteca de criptografia javascript. Antes de usar o CSRNG na Web Crypto API, ela tentou usar o nslDOMCrypto mas fez uma comparação incorreta ao verificar a versão do navegador.”

Portanto, caso você esteja usando um endereço de carteira Bitcoin gerado com ferramentas com falhas você precisará gerar um novo endereço de Bitcoin e transferir os fundos para o novo.
O mais indicado para evitar problemas.

Via Security Affairs

loading...