研究者が後にこの事件を再調査したところ、侵害された鍵を生成するために使用されたニーモニックフレーズの最初の2つの単語が「Milk Sad」であることが判明し、この事件は「Milk Sad事件」と呼ばれるようになりました。
そして、これらすべては疑似乱数生成器であるメルセンヌツイスター MT19937-32 に起因しています。
ビットコインの秘密鍵は256ビットの乱数で構成されることになっています。理論上、2の256乗通りの組み合わせが可能です。完全に同一の数列を生成するには、256回のコイン投げの表と裏がすべて完全に一致する必要があります。これが起こる確率はゼロではありませんが、非常に近いです。ウォレットのセキュリティは運ではなく、この広大な可能性の宇宙から生まれるのです。
しかし、Lubianマイニングプールなどのツールで使用されているメルセンヌツイスターMT19937-32乱数生成器は、真に公平な「コインフリッピングマシン」ではなく、限られた規則的な範囲内で常に数字を選択する、いわゆる「スタックデバイス」です。ハッカーがこのパターンを理解すると、総当たり攻撃によって可能性のあるすべての弱い秘密鍵を迅速に列挙し、対応するビットコインウォレットのロックを解除することができます。一部のウォレットおよびマイニングプールユーザーによるセキュリティに関する誤解により、2019年から2020年にかけて、この「弱いランダムアルゴリズム」を使用して生成された多くのビットコインウォレットは、この脆弱な範囲に大量の資金を流入させ、驚異的な額の資産を蓄積しました。Milk Sadチームによると、2019年から2020年にかけて、これらの弱い鍵ウォレットが保有するビットコインの累計数は53,500を超えました。資金は、2019年4月に短期間で4つの脆弱なウォレットに約24,999ビットコインが送金された、クジラレベルの中央集権型送金から発生した。また、日々のマイニング収益からも資金が流入しており、一部のアドレスは1年間で「lubian.com」とマークされたマイナー報酬を14,000以上受け取った。現在、このようなウォレットは22万個存在し、保有者は秘密鍵生成プロセスに潜む危険性に気付かず、現在も資産を投資し続けているようだ。2020年末の大規模な資金流出は、長らく埋もれていたセキュリティリスクを露呈させた。2020年12月28日には、異常なオンチェーン取引が発生した。数時間のうちに、Lubianの脆弱鍵範囲に属する多数のウォレットが空になり、当時の価値で約37億ドル相当の約136,951ビットコインが、単価約26,000ドルで同時に送金されました。取引手数料は金額に関わらず75,000satに固定されており、運営者がビットコインネットワークを深く理解していたことを示しています。資金の一部はその後、Lubianマイニングプールに還流し、その後のマイニング報酬として利用されました。これは、送金された資産の全てがハッカーの手に渡ったわけではないことを示しています。しかし、被害者にとって損失は既に顕在化していました。さらに奇妙なことに、一部のオンチェーン取引には「資産を守りたいホワイトハットの皆様へ:1228btc@gmail.comまでご連絡ください」といったメッセージが含まれていました。脆弱な秘密鍵アドレスが公開されていたため、誰でもこれらのアドレスにメッセージ付きの取引を送信することができ、これらのメッセージは必ずしも被害者本人からのものではありませんでした。
がハッカーによるジョークだったのか、被害者からの助けを求めるものだったのかは依然として不明です。重要なのは、この巨額の送金がすぐに盗難と認識されなかったことです。その後の分析で、Milk Sadの研究者たちは、当時ビットコイン価格が高騰し、マイニングプールの収益が停滞していたため、盗難がハッカーによるものなのか、それともLubianの経営陣が高値でウォレットを売却・再編したのか確信が持てなかったと認めました。彼らは、「盗難が2020年に発生したとすれば、メルセンヌ・ツイスターによる弱鍵攻撃が確認されている時期よりも早い時期になりますが、可能性も否定できません」と述べています。まさにこの不確実性ゆえに、2020年末の資金引き出しは業界に警鐘を鳴らすことはなく、膨大な量のビットコインが何年もオンチェーン上に残され、未解決の謎のままとなりました。そのため、影響を受けたのはLubianだけでなく、Trust Walletの旧バージョンも含まれていました。 2022年11月17日、セキュリティ研究チームLedger DonjonがTrust Walletの乱数脆弱性を初めてBinanceに開示しました。チームは迅速に対応し、翌日にはGitHubに修正をプッシュし、影響を受けるユーザーに通知しました。しかし、Trust Walletが脆弱性の詳細と補償策を正式に開示したのは2023年4月22日になってからでした。この期間中、ハッカーは複数の攻撃でこの脆弱性を悪用しました。その中には、2023年1月11日に発生した攻撃があり、約50ビットコインが盗まれました。一方、別のプロジェクトでもこの脆弱性が醸成されていました。Libbitcoin Explorer 3.xのbx seedコマンドは、MT19937疑似乱数アルゴリズムと32ビットシステム時間をシードとして使用し、結果として2の32乗通りの組み合わせしかない鍵空間が生成されます。ハッカーはすぐに探索的な攻撃を開始し、2023年5月からオンチェーン上で複数の小規模な盗難が発生しました。攻撃は7月12日に最高潮に達し、bxによって生成された多数のウォレットが空になりました。7月21日、MilkSadの研究者は、ユーザーの損失に関するトラブルシューティングを支援していた際に、問題の根本原因を発見しました。bxシードに含まれる弱い乱数により、秘密鍵のブルートフォース攻撃が可能になっていたのです。彼らは直ちにLibbitcoinチームに報告しました。
しかし、このコマンドは公式にはテストツールとみなされていたため、当初のコミュニケーションはスムーズに進みませんでした。チームは最終的にプロジェクトを迂回し、8月8日に脆弱性を公開し、CVE番号を申請しました。
2023年のこの発見がきっかけで、Milk Sadチームは過去のデータをリバースエンジニアリングし、2019年から2020年にかけて多額の資金が蓄積された脆弱な鍵範囲がLubianに関連していること、そして前述の大規模な送金が2020年12月28日に発生したことを発見し、驚きました。当時、これらの脆弱なウォレットには約136,951ビットコインが存在していました。当日の大規模な流出額は約37億ドルに上り、最後に確認された動きは2024年7月のウォレット統合でした。つまり、Lubian事件の不審性は、脆弱なランダム脆弱性が露呈した後に初めて表面化したのです。見逃された警告の窓は既に消えており、当時のビットコインの所在も失われていました。それから5年後、米国司法省と英国当局によるPrince GroupとChen Zhiの共同起訴により、事件はついに明るみに出ました。私たちにとって、「あなたの財布でなければ、あなたのお金でもない」というフレーズは、ランダム性を前提としている場合にのみ効果を発揮します。
BlockBeats の公式コミュニティに参加しよう:
Telegram 公式チャンネル:https://t.me/theblockbeats
Telegram 交流グループ:https://t.me/BlockBeats_App
Twitter 公式アカウント:https://twitter.com/BlockBeatsAsia