Randstorm / BitcoinJS

Randstorm: a falha no navegador por trás das carteiras antigas de Bitcoin

Qual software está documentado, quais versões importam e como deixar uma carteira antiga sem carregar suas chaves vulneráveis com você.

Última atualização 18/09/2026

O que realmente deu errado

Randstorm diz respeito à geração de chaves em softwares de navegador mais antigos. O SecureRandom() do JSBN poderia combinar uma fonte de entropia inadequada com um Math.random() previsível do navegador. A Unciphered divulgou o problema em 14 de novembro de 2023 e relatou carteiras vulneráveis criadas entre 2011 e 2015. Esse é um período observado, não um veredito sobre todas as carteiras desses anos.

Math.random()Valores iniciais dependentes do navegador
SecureRandom()Um pool de entropia alimenta um PRNG
Chave privadaFormato válido, origem potencialmente previsível

O nome SecureRandom não é uma garantia de segurança. No código-fonte inspecionado do Coinpunk, o fallback preenche um pool de 256 bytes usando Math.random(), mistura o relógio e alimenta um gerador Arcfour. Um pool grande não pode fornecer imprevisibilidade que seus insumos não têm. O mesmo código também contém caminhos mais fortes com Web Crypto e Node.js: alcançar o fallback é a distinção importante.

Este é um defeito na forma como uma chave privada foi escolhida. Não é uma quebra da verificação de assinatura do Bitcoin. Abrir um backup antigo em um app mais novo preserva essas chaves; mover fundos para chaves geradas independentemente muda o que autoriza o gasto.

Carteiras, versões e os limites das evidências

Leia a versão da biblioteca separadamente da versão da carteira. Para um site hospedado, o código servido no dia da criação da chave importa mais que a versão atual do app. A tabela distingue um incidente documentado de achados no código-fonte.

Evidência verificada em 19/09/2026
ProjetoVersão ou períodoO que isso estabelece
BitcoinJS / bitcoinjs-lib0.1.3Nomeado como exemplo na divulgação. JSBN foi usado até março de 2014; isso não estabelece um intervalo completo de versões afetadas para todos os derivados.
Blockchain.info
Blockchain.com
Carteira web histórica; nenhum intervalo numerado de versões afetadas verificadoUma carteira de cliente foi o ponto de partida da investigação da Unciphered. Isso não implica todas as carteiras Blockchain.com ou o app atual.
bitaddress.org2.6.5 · 2.8.0
2013-12-01 · 2014-01-18
2.6.5 atualizou JSBN para 1.4. 2.8.0 adicionou inicialização Web Crypto para o pool inteiro e entropia obrigatória de mouse/teclado. São mudanças documentadas, não uma fronteira comprovada “todas as versões anteriores vulneráveis / todas as posteriores seguras”.
Coinpunk0.2.1
63ca325be538
O snapshot do repositório inspecionado se rotula 0.2.1 e contém um fallback Math.random()/Arcfour junto com caminhos mais fortes. Isso é um achado de código, não prova que toda implantação usou o fallback. O desenvolvimento foi interrompido.

Esta visão geral cobre as implementações verificadas aqui; não é uma lista exaustiva de carteiras afetadas. Um produto não listado não é automaticamente não afetado. Uma data antiga de criação ou um endereço começando com 1 não são suficientes para identificar o gerador.

Prepare o destino uma vez

As três rotas abaixo usam uma nova carteira Electrum Desktop como destino. Os nomes dos menus referem-se à interface desktop 4.8.2 em inglês verificada para este artigo. Baixe a versão atual do site oficial; 4.8.2 é uma referência para as instruções, não uma versão mínima permanente.

Carteiras de hardware que recomendamos como novo destino →

Electrum — verificações oficiais de download e assinatura ↗

  1. Em um computador confiável e atualizado, baixe o Electrum para seu sistema operacional. Siga as instruções oficiais de assinatura e verifique independentemente a impressão digital do assinante antes da instalação.
  2. Escolha File → New/Restore, nomeie a carteira randstorm-new, depois selecione Standard wallet → Create a new seed. Anote e confirme as novas palavras no papel e defina uma senha para o arquivo da carteira. Não importe o segredo antigo.
  3. Antes de depositar, crie recovery-check com File → New/Restore → Standard wallet → I already have a seed, usando apenas o backup NOVO em papel. Compare o primeiro endereço de recebimento em ambas as carteiras via View → Addresses e a aba Addresses. Mantenha ambas as carteiras durante essa verificação.
  4. Em randstorm-new, use Receive → Request (Onchain se o Lightning estiver ativado). Copie o endereço Bitcoin. A rota específica da carteira abaixo deve enviar para esse endereço, com a taxa e o destino completos verificados antes da aprovação.

Blockchain.info: use a carteira que contém os endereços antigos

Esta rota é para uma carteira histórica Blockchain.info que você ainda pode acessar via Blockchain.com. As instruções atuais de envio descrevem a interface web de hoje, não uma tela não verificada de 2012. O saldo da Trading Account é um produto diferente.

  1. Mantenha o backup criptografado original e os registros de login. Na carteira web, verifique Settings → Wallets & Addresses → Bitcoin para endereços importados separadamente. Combine seus endereços públicos antigos conhecidos com os saldos exibidos; uma nova frase de recuperação não deve ser assumida como cobrindo chaves importadas.
  2. Abra Send no painel da carteira, selecione Bitcoin e insira o novo endereço Electrum como destino externo. Comece com um valor pequeno, escolha Continue, revise o endereço, valor e taxa, depois Send.
  3. Espere a confirmação no History do Electrum. Então envie o saldo restante disponível, descontando a taxa. Verifique cada endereço importado financiado separadamente; o teste bem-sucedido sozinho não esvazia a carteira antiga. Pare de usar todos os endereços de recebimento aposentados.

Blockchain.com: instruções atuais de envio ↗

bitaddress.org: transfira uma carteira de papel com Sweep

Uma impressão do bitaddress geralmente representa uma única chave, não uma frase de recuperação moderna. Preserve o papel e qualquer arquivo HTML original: seu nome ou rodapé pode identificar a versão. O histórico de versões ajuda a reconstruir a configuração; não certifica uma chave individual.

  1. Identifique a chave privada, não o endereço público de recebimento. Um WIF mainnet normalmente começa com 5, K ou L; uma chave criptografada BIP38 começa com 6P. O prefixo é apenas uma dica de formato. Mantenha a forma original de compressão porque ela determina o endereço correspondente.
  2. Para BIP38, primeiro descriptografe localmente e offline usando uma cópia verificada do repositório oficial do bitaddress: Wallet Details → insira a chave criptografada → View Details → insira a senha → Decrypt BIP38. Compare o endereço resultante com o papel antes de usar o WIF correspondente. Nunca insira a chave em um site ativo ou gere uma carteira substituta com esta ferramenta antiga.
  3. Na carteira destino NOVA Electrum, abra Wallet → Private keys → Sweep. Insira o WIF não criptografado somente neste diálogo local. Verifique que o destino pertence a randstorm-new, depois revise a transação e a taxa antes de transmitir.
  4. Sweep transfere o saldo disponível controlado pela chave fornecida em uma única transação. Não é uma importação nem a sequência de teste pequena acima. Repita para outras chaves de carteira de papel financiadas e mantenha os originais até que todos os recebimentos esperados sejam confirmados.

bitaddress.org — repositório oficial e arquivos assinados ↗

Coinpunk: proteja o backup antes de mexer no servidor antigo

O Coinpunk era auto-hospedado, então não há um site universal atual de login ou serviço de recuperação. Esses rótulos vêm do snapshot do repositório 63ca325be538, cujo package.json declara a versão 0.2.1. Uma implantação modificada pode ser diferente.

  1. Se sua instalação original confiável ainda funciona, abra Backup → Download e mantenha várias cópias da carteira criptografada. Preserve também o identificador de login, senha e backup do servidor. Não atualize nem reinstale a única instância sobrevivente primeiro.
  2. O formulário histórico Send Bitcoins contém Bitcoin address to send to, Amount e uma taxa exibida. Use-o apenas se a instância original ainda funcionar de forma confiável e suportar o endereço de destino. Não force um endereço bc1 neste software antigo; o analisador de endereços inspecionado usa Base58Check.
  3. Para um destino incompatível ou um servidor offline, preserve o backup e recupere suas chaves localmente com ajuda que entenda esta versão do Coinpunk. O modelo da carteira armazena keyPairs, incluindo chaves de troco, dentro de um payload criptografado. Isso não é uma seed Electrum nem um wallet.dat do Bitcoin Core; renomear o arquivo não pode convertê-lo.
  4. Uma vez que as chaves WIF recuperadas tenham sido associadas aos endereços originais, use o procedimento Sweep do Electrum acima para cada chave financiada. Verifique o conjunto completo, incluindo endereços de troco. Mantenha o backup criptografado e sua senha até que os recebimentos no destino conciliem com o saldo esperado.

Carteiras de hardware que recomendamos como novo destino

Para esta migração, recomendamos o Trezor Safe 3 se você preferir botões físicos, ou o Trezor Safe 5 se uma tela sensível ao toque maior facilitar a verificação de endereços. Ambos podem manter as novas chaves de assinatura em um dispositivo separado. Comprar um não corrige uma chave antiga: crie uma carteira completamente nova no dispositivo.

Como Associado da Amazon, recebo por compras qualificadas.

Trezor Safe 3

Dois botões e uma tela monocromática: nossa escolha para leitores que querem confirmação deliberada por botão. Verifique o endereço completo de recebimento no dispositivo antes de transferir o saldo antigo.

Veja o Trezor Safe 3 na Amazon

Trezor Safe 5

Uma tela colorida de 1,54 polegadas com feedback tátil: nossa escolha quando tamanho da tela e controles por toque são mais importantes. A tela mais confortável não torna chaves reutilizadas ou expostas seguras.

Veja o Trezor Safe 5 na Amazon

Os links da Amazon abrem uma busca regional de produtos, não uma listagem de vendedor verificado. Verifique o vendedor contra as lojas oficiais da Amazon do Trezor ou revendedores autorizados. Use as verificações de autenticação do dispositivo durante a configuração; nunca use um backup de carteira pré-escrito fornecido.

  1. Comece em trezor.io/start e instale o Trezor Suite. Siga a configuração específica do dispositivo e as verificações de autenticação, escolha Create a new wallet e complete a verificação do backup no dispositivo. Mantenha o backup offline. Não restaure a carteira antiga nem a seed da carteira de software do exemplo acima neste dispositivo.
  2. Para um envio normal, selecione a conta Bitcoin no Trezor Suite, escolha Receive e verifique o endereço completo no dispositivo conectado. Use este endereço em vez do endereço da carteira de software na rota Blockchain.com. Confira a transferência recebida e suas confirmações no Trezor Suite, em vez de History do Electrum.
  3. Para a rota Electrum Sweep, conecte o Trezor recém-configurado e crie uma carteira Electrum com File → New/Restore → Standard wallet → Use a hardware device. Siga o guia Electrum do Trezor e use a conta Bitcoin e tipo de endereço correspondentes. Verifique um endereço de recebimento no Trezor, depois use-o como destino do sweep. Insira somente a chave WIF ANTIGA no Sweep; nunca digite as palavras de backup do Trezor no Electrum ou em um site.

Trezor: conecte o dispositivo ao Electrum ↗

Fontes e escopo

Este estudo de caso cobre implementações históricas de navegador e suas diferentes rotas de migração. Para a relação mais ampla entre entropia, frases seed e carteiras de hardware, continue com o artigo de fundo.

Contexto: como surgem seeds fracas em carteiras →

Verificado em 19/09/2026 contra documentação primária e código-fonte. Nenhum fundo real ou chave privada foi usado nos testes. A tabela não é uma lista exaustiva nem um diagnóstico da sua carteira.

Perguntas frequentes

O BitcoinJS 0.1.3 identifica a versão da minha carteira?

Não. Ele identifica um exemplo de biblioteca citado na divulgação Randstorm. Uma carteira pode embutir ou modificar essa biblioteca sem expor sua versão ao usuário. A build original da carteira e o ambiente do navegador ainda precisam ser identificados.

O bitaddress.org 2.8.0 prova que minha carteira de papel é segura?

O changelog documenta coleta de entropia mais forte na 2.8.0. Não certifica como uma chave individual foi gerada, quais recursos do navegador estavam disponíveis ou se o arquivo foi modificado. O artigo, portanto, trata isso como uma mudança documentada, não uma fronteira universal de segurança.

Por que a rota da carteira de papel usa Sweep em vez de Import?

Import mantém a chave privada original em uso. Sweep cria uma transação que transfere seus fundos disponíveis para a carteira destino preparada. A nova carteira deve ter chaves geradas independentemente, e o destino e a taxa devem ser verificados antes da transmissão.

O Electrum pode abrir um backup Coinpunk diretamente?

A versão Coinpunk inspecionada armazena um payload de carteira criptografado, não uma seed Electrum. Preserve o backup, identificador de login e senha. Recupere as chaves localmente com expertise específica da versão, depois associe-as aos endereços originais antes de usar a rota sweep.