「数秒で秘密鍵が判明」仮想通貨ZILのアプリ欠陥、6,772件が対象
よきょい

仮想通貨Zilliqa(ZIL)が公表した調査報告で、ハードウェアウォレット「Ledger」向けアプリの欠陥により、少なくとも6,772アカウントの秘密鍵が外部から復元できる状態だったことが確定しました。
実際に資金を抜かれたのは51アカウントで、66件の取引を通じて683,130,969.66 ZILが盗まれています。8月24日時点で、従来型の送金は停止したままです。
何が起きたのか
原因は単純なコピーミスでした。アプリは署名のたびに40バイトの乱数を生成していましたが、そこから誤った32バイトを取り出して使っていたのです。結果として8バイト分のゼロ埋めが残り、8バイト分のランダム性が捨てられました。
これにより、署名に使う一時的な乱数の上位64ビットが必ずゼロになりました。同じアカウントで4回以上署名すると、ブロックチェーン上に公開されている情報だけから、普通のパソコンで数秒のうちに秘密鍵を計算できてしまいます。欠陥は2019年から2026年まで、公開された全バージョンに存在していました。
実は「よくある壊れ方」
これは新種の攻撃ではありません。署名に使う乱数に偏りや使い回しがあると鍵が漏れるというのは、暗号の世界では古くから知られた失敗パターンです。
2010年に家庭用ゲーム機の署名鍵が流出した件、2013年にAndroidの乱数生成の不具合でビットコインが盗まれた件、2023年にビットコイン用ツールの弱い鍵生成が発覚した件も同じ系譜にあります。今年8月にはColdcardのシード生成の問題を受けて操作手順が変更されたことも公表されました。共通するのは、暗号方式ではなく実装のほうが壊れている点です。
もう一つ重要なのは、今回の欠陥がLedgerのハードウェア本体ではなく、Zilliqaが書いたLedger向けアプリの側にあったことです。デバイスが鍵を外に出さないことと、そのアプリが安全な署名を作ることは別の問題です。EVM対応の取引、リカバリーフレーズ、同じ端末で扱う他チェーンの資産は、影響範囲の外とされています。
公表された数字は「下限」にすぎない
見落としやすいのが数え方です。6,772という数字は、1つの期間に5回以上署名したアカウントを条件にした一括調査の結果です。ところが理論上の危険ラインは4回。つまり署名がちょうど4回のアカウントは、この集計から構造的に抜け落ちています。
個別アドレスを確認するツールはより厳しい条件で動き、4回のケースも報告します。しかし同じ条件で全体を調べ直す作業は終わっていません。683.13百万ZILという被害額も、現時点で判明した分については正確という位置づけで、今後増える可能性があります。
Triaカードは世界中で使える仮想通貨クレジットカード (無料プラン有) で、最大6%が仮想通貨でキャッシュバックされます。
資産運用や最大40倍レバレッジの仮想通貨取引も同一のカード管理アプリから行えます。「バーチャルカードプラン」は期間限定で無料となっているため是非この機会に登録しておきましょう。(登録に必要なアクセスコード:MWVJXJ6475)
Triaの特徴
記事ソース:資料























































