
編集者注: この記事は SECBIT Lab からのもので、著者: SECBIT Lab が許可を得て公開しています。
北京時間 9 月 24 日 11:32、Fomo3D の第 2 ラウンドの最終賞はアドレス 0x18a0 によって獲得され、ボーナスは 3,264.668 イーサでした。 SECBIT 研究所の分析により、このラウンドのゲームの勝利スキルは、ハッカーの「トランザクションのブロック」攻撃である最初のラウンドの勝利スキルとまったく同じであることが判明しました。
前回の第1ラウンドと比べて、今回の対局は33日間続き、参加資金、期間、最終優勝賞金のいずれにおいても、前回に比べ大幅に縮小した。
2か月前を振り返ると、Fomo3Dの最初のゲーム参加資金は一時40,000イーサを超え、ゲームの最初のラウンドの最終賞金は10,000イーサを超えました。
しかし、9 月以降、市場全体の低迷により、Fomo3D 風のゲームはほとんど姿を消しました。 Fomo3D や Last Winner に代表されるいくつかのアクティブなゲームの人気が大幅に低下しました。同様の契約のほとんどは、試合の次のラウンドに先発する選手がいないため保留されている。
したがって、これまでのところ、Fomo 3D アワードの第 2 ラウンドが授与されており、ハッカーが賞を獲得するという不安はほとんどなく、ゲームの人気も以前と同じではなくなりました。
SECBIT研究所がこの変更について分析を行ったところ、注目されていたにも関わらず、つい最近まで公開され続けていたゲームのエアドロップ機構の抜け穴[1]と「トランザクションブロッキング」攻撃[2]が判明した。新たな高みに押し上げられましたが、本質的にはそれがゲーム衰退の主な理由です。
裕福かクールか?
昔は暑かったのに、今は寒い
ゲーム人気のパノラマ
画像の説明
図 1: Fomo3D プレーヤーの参加と参加資金
上の図は「Fomo3D プレーヤーのエンゲージメントと資金調達の状況」を示しています。赤はゲームに参加するために契約に電話した人の数を表し、青はゲーム契約に入る資金の量を表します。データ曲線の最も高いピークはグラフの左側に表示され、7 月 20 日と 7 月 21 日に対応します。過去 2 日間で、多くのメディアが驚異的なゲーム Fomo3D を熱心に報道しました。当時は多くのプレイヤーが追随してゲームに参入し、ゲーム契約参加数と参加資金は最高潮に達し、参加資金は40,000イーサを超え、最大参加回数は18,000回を超えました。曲線の最高点は、Fomo3D ゲームの最初のラウンドの最高点に対応します。
画像の説明
図 2: 最終勝者のプレーヤーの参加と参加資金
同様に、上のグラフは「最終勝者プレイヤーのエンゲージメントとバンクロールのステータス」を示しています。 Last Winner は Fomo3D ゲーム用に部分的に変更され、ゲームの制限時間が短縮され、各ラウンドがより早く終了します。最初のピークは 8 月 8 日に発生し、それ以来複数のローカルピークがあり、さまざまなラウンドの開始を表していますが、明らかにコール数と入場資金は 1 ラウンドほど良くありません。
賞金総額
画像の説明
図 3: Fomo3D 契約のイーサ残高の変化
画像の説明
図4:Last WinnerコントラクトのEther残高の推移
最終賞
8月17日、SECBIT研究所とAnchain.ai同チームは共同で、ハッカーチームBAPT-LW20がエアドロップメカニズムの抜け穴を悪用して多額のボーナスを獲得したことを明らかにした。同日、ラストウィナーゲームの第1ラウンドが終了し、最終賞の優勝者もBAPT-LW20チームとなった。統計によると、ハッカー チームは Last Winner の第 1 ラウンドで合計 12,948 イーサを獲得しました。
最後の勝者が完了した最初の 9 ラウンドのゲームで、ハッカー集団が所有するアカウント 0x5167 は合計 4 つの最終賞品を獲得しました。
ゲームの各ラウンドの最終的なジャックポット額と期間を詳しく見てみると、ボーナスの額が非常に早く減少し、各ラウンドの終了がますます早くなっていることがわかります。これは、上記のゲーム エンゲージメント データ グラフとよく一致しています。
反射する
反射する
メカニズムの抜け穴がゲーム衰退の主な原因
画像の説明
図 5: 攻撃されている Fomo3D ゲーム コントラクト
上の写真は「Fomo3D ゲームコントラクトが攻撃されている様子」を示しており、ゲームの第 1 ラウンドのピーク前後と第 2 ラウンドの開始後に、一部のハッカーがエアドロップの脆弱性を必死に利用して攻撃し、高額な利益を掴んでいました。第 1 ラウンドの終わりと第 2 ラウンドへのカウントダウンの終わりに、一部のハッカーは最終的に莫大な賞金を獲得することを目標に、必死になって「トランザクションをブロック」攻撃を試みました。
画像の説明
図 6: Attack on the Last Winner ゲーム契約
上の写真は「Last Winner ゲームのコントラクトが攻撃されている様子」 Fomo3D と同様に、ゲームが熱い時期のハッキング攻撃の規模は非常に大きくなります。
「トランザクションのブロック」攻撃
Fomo3D ゲームはリンクを巧みに設計しており、ゲームに最後に参加した人が報酬として賞金プールのイーサの半分を獲得します。開発者は、このデザインを通じて多くのプレイヤーが次々とアリーナに入場し、誰でも「幸運な人」になれるようにしたいと考えています。しかし、ハッカーがゲームの終了を早めて利益を受けるために「ブロッキング トランザクション」攻撃 [5] を使用した後、プレイヤーを魅了するこの設計は破られました。そのため、後から参入した一般選手はネギ切りにしかならず、当然ながら選手を集めることは難しい。
「エアドロップ」攻撃
最終的な賞品に加えて、ゲーム内にはエアドロップ報酬メカニズムも設計されており、プレイヤーは一定の確率でエアドロップ報酬を受け取ることができ、これもプレイヤーを参加させる重要な理由です。しかし、エアドロップの仕組みには乱数の抜け穴があるため、ハッカーは特定のスキルによって高確率で報酬を奪い続けることができ、一般のプレイヤーが成功することはほぼ不可能です。このようなエアドロップの報酬の公平性も疑問視されています。
対策と展望
dApps への道のりはまだ長い
このような大ヒットゲームは、dApp ゲーム開発の歴史において重要なマイルストーンとなることは間違いありません。しかし、あまりにも急速な不況は私たちに多くの反省をもたらしました。 Fomo3D のようなゲーム、あるいはすべての dApp ゲームについても、まだまだ長い道のりがあります。ハッカー攻撃からの教訓をタイムリーに学び、防御策を講じる必要があります。
「エアドロップ脆弱性」攻撃は、Fomo3D 系ゲームで最も頻繁に攻撃される脆弱性です。ハッカーは賞金プール内の資金を低コストで強奪し続けることができます。
一方で、Fomo3D ゲームのエアドロップ メカニズムは乱数を使用して勝利の確率を制御しますが、乱数のソースはブロックまたはトランザクション内の特定のパブリック パラメーター (トランザクション開始者のアドレスなど) であるため、ブロックタイムスタンプ、ブロック難易度など、すべての Ethereum スマート コントラクトは乱数を簡単に予測できます [6]。したがって、乱数が関係するシナリオでは、開発者は特に注意するか、特定の手段を使用して乱数発生源の予測の難易度を高めることを SECBIT Labs は推奨しています。たとえば、開発者は、複数の送信と再開示を使用したり、いくつかのブロックの描画を遅らせたりすることで、乱数が予測されるリスクを回避できます。
一方で、Fomo3D ゲームコントラクトでは、コントラクト自動化攻撃を防ぐため、呼び出し元が通常アカウントか契約アカウントかを検出していますが、検出方法に抜け穴があるため、ハッカーが何らかの手法を利用して検出を回避する可能性があります。したがって、プロジェクト当事者がdAppゲームに参加するプレイヤーの身元を検出する場合、より信頼性の高い方法も採用する必要があります。たとえば、トランザクションの元の開始者 (tx.origin) と現在のコントラクトの呼び出し元 (msg.sender) が同じアドレスであるかどうかを判断します。
前述の「トランザクションのブロック」攻撃は、Fomo3D 風のゲームが直面するもう 1 つの大きな課題です。
ハッカーは高額な手数料を使ってマイナーを最初にパッケージ化するよう誘い、契約を利用してゲームのステータスを攻撃するかどうかの基準として自動的に判断します。ハッカーは最終的に低コストでブロックをブロックし、各ブロックに少数のトランザクションのみを詰めることができるようになり(他の人のトランザクションが詰め込まれる可能性が減ります)、ゲームを迅速に終了させ、最終的な賞金を獲得する確率を高めます。
実際、この問題は Fomo3D のようなゲームを脅かすだけではありません。すべての同様のメカニズム、つまり、プレーヤーが特定の時間枠内に何らかの競争操作を完了するために競争することを要求するスマートコントラクトは、これによって脅かされています。この問題を防ぐために、SECBIT Labs は、ゲーム開発者がゲームのメカニズムから始めて、ゲームの最終的な勝利 (莫大な賞金の獲得) とカウントダウンの終了 (最後のトランザクションがパッケージ化される) の間の避けられない関係を遮断することを推奨しています。ハッカーの攻撃による利益の確率と攻撃意欲が最小限に抑えられること。
Fomo3D のようなゲームのハッカーは、イーサリアム コンセンサス プロトコルの機能を利用して、ゲーム メカニズムの抜け穴を見つけて攻撃を開始します。このことからも、dAppアプリにおける仕組み設計は、技術そのものだけでなく、プラットフォームの外部環境やゲーム理論なども絡む非常に複雑なプロジェクトであることが改めて認識され、これもリンクしやすい点です。ハッカーに攻撃されました。したがって、dApp プロジェクトでは、仕組みの設計プロセスにおいて特に注意する必要があります。
Amby Labs の創設者、Guo Yu 氏は次のように述べています。「新しい世界には生命が存在し、捕食者もいます。トレーダーが存在し、ハッカーが存在します。ブロックチェーン上のアプリケーションは進化しており、攻撃者も進化しています。」テクノロジーと富の交差点では、ハッカーは常に最も敏感な嗅覚を維持します。ハッカーによる攻撃は、私たちに多くの反省と改善の機会を与え、それがアプリケーションの継続的な進化の触媒でもあります。
参考文献
参考文献
[1] Pwning Fomo3D Revealed: Iterative, Pre-Calculated Contract Creation For Airdrop Prizes!,
https://peckshield.com/2018/07/24/fomo3d/
【2】スマートコントラクト史上最大の攻撃手口が暴露され、ハッカー集団の犯罪内容が判明
https://zhuanlan.zhihu.com/p/42318584
【3】Fomo3D千万賞受賞者の「必殺技」の全貌が明らかに
https://zhuanlan.zhihu.com/p/42742004
[4] Péter Szilágyi によって提案された Airdrop エクスプロイト POC、
https://www.reddit.com/r/ethereum/comments/916xni/how_to_pwn_fomo3d_a_beginners_guide/, 2018/07/23
[5] ブロックリズム: Fomo3D 賞を獲得するためだけに、80,000 件のトランザクションがイーサリアム ネットワークを「ブロック」しましたか?
https://mp.weixin.qq.com/s/5nrgj8sIZ0SlXebG5sWVPw
[6] Predicting Random Numbers in Ethereum Smart Contracts
https://blog.positive.com/predicting-random-numbers-in-ethereum-smart-contracts-e5358c6b8620