Randstorm ウォレット残高スキャナー
Randstorm MWC1616(Web JS版)の脆弱性により影響を受ける可能性のあるビットコインウォレットの残高を検出します。
Randstorm:初期のウェブウォレットに潜む脆弱性
2011年から2015年の間に作成されたビットコインウォレットに影響を与える、数十億ドル規模の暗号学的脆弱性についての詳細解説。
脆弱性の発生要因
2023年11月、サイバーセキュリティの研究者により、Randstormと呼ばれる広範囲に m 影響を及ぼす脆弱性が公表されました。 この欠陥は、暗号資産の初期成長期にブラウザベースのJavaScriptライブラリを使用して作成されたビットコインウォレットを対象としています。
Randstormはビットコインプロトコル自体の欠陥ではなく、ウェブブラウザにおける不適切な疑似乱数生成器(PRNG)の実装と、BitcoinJS などの主要なJavaScriptライブラリの初期バージョンに存在した欠陥が組み合わさったことで発生しました。
Randstormの仕組みと技術的背景
安全な暗号資産ウォレットの根幹となるのはエントロピー(秘密鍵の生成に使用される予測不能なランダム性)です。 2010年代前半にウェブ上で鍵を生成する際、開発者はウェブブラウザのPRNG関数に依存していました。
シードのエントロピー = Date.now() [エントロピーが低いタイムスタンプ]
PRNGの出力 = 32ビット状態 (予測可能な行列)
特に、旧世代のV8 JavaScriptエンジン(ChromeやNode.jsで採用されていたもの)では、MWC1616と呼ばれるアルゴリズムが使用されていました。
これを Date.now() のような単純なタイムスタンプベースのシード生成と組み合わせたことで、生成され得る秘密鍵の探索空間が 2256 からブルートフォース攻撃(総当たり攻撃)が可能な範囲にまで大幅に縮小してしまいました。
- 低エントロピーなシード生成: ミリ秒単位のタイムスタンプのみに基づく決定論的なシード。
- 切り捨てられたPRNG出力: 上位ビットの切り捨てにより、鍵空間が数学的に予測可能に。
- 鍵導出の露呈: 攻撃者が1秒あたり数百万件の対象タイムスタンプに対して鍵を事前計算可能。
対策と現在の影響
現代のウェブ標準では暗号学的に安全な乱数生成器(crypto.getRandomValues())が導入されていますが、10年前に作成された何百万ものレガシーウォレットは、ブロックチェーン上で恒久的に脆弱なまま残されています。