Asayomu Tech
注目★★★★GitHub Advisory

CryptoJS の乱数生成に致命的欠陥、BIP39 ウォレットの秘密鍵が列挙可能に

30秒で把握

  • 1CryptoJS 3.x の乱数生成器が暗号学的に不安全・128/256 ビット要求が 2^39/2^47 に縮小
  • 2BIP39 ウォレットの秘密鍵生成に使用されていた・Coinspect が実際の攻撃を再現確認
  • 34.0.0 で修正済み・依存だけでは攻撃対象にならず使用関数の追跡が必須

要約

CryptoJS 3.x 系の `WordArray.random()` が暗号学的に安全でない乱数生成器であることが判明した。128 ビット・256 ビット の要求でも実効的な探索空間は 2^39・2^47 に縮小され、一般的なハードウェアで全列挙可能である。Coinspect の調査で、BIP39 リカバリフレーズの生成にこの関数を使うウォレットアプリケーションが存在することが確認された。4.0.0 でネイティブ暗号 API に置き換わったが、脆弱な生成器の後に PBKDF2 やハッシュを適用しても欠落エントロピーは復元されない。依存するだけでは攻撃リスクを持たず、セキュリティ値の生成に該当関数を使う場合に限定される。

あなたへの影響

BIP39 ウォレットを運用するチームは、CryptoJS < 4.0.0 に依存して秘密鍵生成を行っているかを即座に確認し、該当するなら 4.0.0 以上への直ちな更新と既存ウォレットの再生成が必須である。

推奨:暗号ライブラリのバージョンアップは機械的であってはならず、エントロピー生成の具体的な実装を追跡する必要がある。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。