
9月5日、Odailyが主催し、36Krグループが戦略的に共催したPODカンファレンスが北京で開催された。カンファレンスのセキュリティフォーラムでは、SECBIT Labの創設者Guo Yu氏がゲストとブロックチェーンのセキュリティ問題について議論した。 Guo Yu 氏は、最近のセキュリティのホットトピックである「最後の勝者」に関するレポートを開始し、内部事情を詳しく説明しました。
Guo Yu 氏は、最後の勝者が親コントラクトを攻撃することと、なぜ最後の勝者コントラクトのアドレスを渡す必要があるのかについて、親コントラクトを攻撃する最後の勝者は実際には多くの種類の Fomo3D ゲームを攻撃できる汎用兵器であると述べました。 . この契約は非常に巧妙に構成されています。
副題
以下はSECBIT Labの創設者Guo Yu氏の講演の書き起こしです。
Amby Lab の Guo Yu です。今日はいくつかの興味深いことを共有したいと思います。
8月10日、パートナーが突然、イーサリアムに何か奇妙な現象があるようだと私に告げ、それを分析できないか尋ねてきました。私たちも撮ってみて「おかしい」と感じました。大量の連続失敗トランザクションがあり、赤い点はすべて0.1ETHとなっており、この繰り返しが何かを攻撃しているようです。そして、これらすべてのトランザクションは、最初の 4 文字が 0x5483 である奇妙なスマート コントラクトから生じています。このスマート コントラクトのトランザクション量は依然として非常に大きく、毎分数十のトランザクションが発生し、イーサリアムで深刻な輻輳を簡単に引き起こす可能性があります。これは私たちが発見した予備的な機能です。奇妙で不審に感じ、私たちもそれが何をするのか疑問に思いました。
その後、多数の失敗したトランザクションに加えて、さらに多数の成功したトランザクションがあることがわかりました。成功した取引には大きな特徴はなく、0.1 が投資され、0.19 が結果として出るのは非常に奇妙です。同時に、失敗したトランザクションの特徴として、ガス消費量が非常に少ないことが挙げられ、収益率が高く非常に効率的なマイニングマシンであると考えられます。
後でわかったのですが、0X5483 は実はラストウィナーを攻撃するための攻撃コントラクトであり、慎重に構築され非常に強力であり、攻撃手順も非常に複雑です。コントラクトにはたくさんの送金があり、例えばこのPPTのコントラクトでは0.1 ETHが投入され、最終的には0.18 ETHまたは0.12 ETHが出てきます。
最後の勝者とは何ですか? Fomo3D の模倣版であり、主に家庭用です。百度ではたくさんの広告情報を見ることができますし、WeChatグループやQQグループもたくさんあります。さらに、最後の勝者には、ダウンロードできる Android および iOS クライアントもあります。当時、ピーク時には16,000人が参加していて、参加する人たちは熱狂していました。
Fomo3Dとは何ですか?これは少し前にイーサリアムユーザーに瞬時に混雑を引き起こした現象レベルのスマートコントラクトゲームです。ゲームには莫大な報酬のルアーがあり、ルールは次のようになります。 1つ目はキーを交換し、キーを取得した後にFomo3D風のゲームコントラクトにそれを投げます。これには 3 つの収益方法が含まれます。最初の方法はメイン賞金プールに存在し、最後の賞金を獲得する機会が得られます。つまり、ゲームはカウントダウンを続け、最後にキーを購入した人が最終的な莫大な報酬を獲得します。 ; 2 番目の方法にはサブ報酬プールがあり、その方法はランダムな確率の宝くじです。つまり、キーが交換されるときに宝くじを引くチャンスがあります。3 番目の方法は少額の報酬であり、キーが早く購入されるほどです。 、後から入ってくる配当金を早く享受できます。これら 3 つの魅力的な勝利モデルに基づいて、Fomo3D はローンチ後しばらくの間、イーサリアムで混雑を引き起こしました。
7 月 24 日、Ambi Labs は、2 回目のエアドロップに抜け穴があり、誰かが不当な方法で抽選結果を入手する可能性があることを発見し、8 月 10 日に警告を受けました。
以前暴露されたエアドロップ宝くじのモデルは、誰かが攻撃可能な計画を公開しましたが、その攻撃方法は非常に非効率であり、成功することさえない可能性があります。誰もが知っているのに誰もやろうとせず、お金も稼げないようです。しかし、この攻撃契約は異なり、統計によると、この契約の成功率はほぼ 60% です。
翌日、私たちは契約書の分析を開始し、3つの疑問が見つかりました。 1 つは、攻撃コントラクトを呼び出すためのアドレスが 5 つあること、もう 1 つは、最後の勝者コントラクトのアドレスがパラメーターとして攻撃コントラクトに渡されること、3 つ目は、成功したすべての攻撃トランザクションの作成と自己破壊が含まれていることです。契約の。そのときは理由はわかりませんでしたが、これがギャングであることは確かで、データを分析したところ、このギャングが他にも多くのことを行っており、共同でさまざまなゲーム契約を攻撃していたことが判明しました。この攻撃者グループを「BAPT-LW20」と名付けました。
球団は12日、契約コードの逆解析を試み始めた。手元にあるツールが限られているため、自己解読しか見ることができず、丸一日掘っても一向に進展がなく、解析作業は行き詰まりました。翌日、私の友人は、攻撃契約書をコピーして、攻撃契約書の攻撃者の住所を私たちの住所に置き換えることを提案しました。攻撃コントラクトを再展開し、暫定的な攻撃を開始します。しかし、何度も挑戦しましたが、引き分けに勝つことはできませんでした。非常に完全な置き換えを行い、プロセスを追跡しましたが、理由はわかりませんが、たとえ失敗したとしても非常に憂鬱です。
夕方12時に、最終計画は契約を行き詰まり、契約の逆分析を開始することを決定しました。コントラクトリバースは非常に疲れるのですが、どうすればよいでしょうか?私たちのアイデアは、逆解析支援装置を開発することです。手元に何もないので、いくつかやらなければなりません。まず、EVM は逆解析ツールが少ないため、自社で開発することにしました、また、コントラクトの多層ネストの追跡が難しく、同時にループ処理を特定するのも容易ではありませんでした。 EVMバイトコードで。
私たちはツールの開発に 3 日を費やし、状況が好転し始めました。最初のツールは、awesome-tx-tracer (コントラクト動作追跡) で、このツールを使用すると、スマート コントラクトの全プロセスで複数のトレーサーを生成でき、多くのトランザクション動作をトレーサーによって分析できるため、大量のデータ; リバース エンジニアリング用のツール - minievm (契約実行シミュレーター) で、これを使用すると、多くのトレーサーをバッチで定性的に分析できます。3 番目のツールは、evm プラグインに基づいて修正された ida-evm (契約フロー グラフ アナライザー) です。 。生成されたトレーサーは自動的に前後に移動できるため、プロセス全体を繰り返し観察するのが簡単になります。
最終的に、私たちはついに真実を発見しました、攻撃コントラクトは親コントラクトであり、親コントラクトは 1000 個のサブコントラクトを駆動し、乱数の勝率を大幅に高めることができます。同時に、各サブコントラクトが攻撃する際には、ゴーストコントラクトを作成して攻撃を開始します。幽霊契約とは何ですか?攻撃時に作成され、攻撃直後に自己破壊し、ブロックチェーンの保存領域に痕跡を残しません。ハッカーは、特定の親契約を介して 1,000 件の下位契約を駆動し、無数の自己破壊契約を作成し、その自己破壊契約が最終的に最後の勝者を攻撃するという、非常に巧妙な仕組みです。
審査は17日の朝に始まり、私たちが最終的に決定した結果は、6日以内に宝くじプールの50%を引き出し、5万件近くの攻撃コールを開始し、2万件以上のゴーストコントラクトを作成するというものだった。前回の勝者にとって、エアドロップ賞金プールの割合が Fomo3D の 1% から 10% に増加することは非常に興味深いことです。したがって、ハッカーは Last winner への攻撃に成功した後、Fomo3D についてあまり知りません。この親契約は、最後の勝者の起動初日から数時間以内に攻撃を開始し、最初の数日間で 1 時間あたり数十万ドルを稼ぎました。
偶然にも、午前10時に、先ほど述べた3つの収益モデルの中で最初の賞である最終勝者賞が授与されます。最優秀賞は攻撃者5人のうちの1人に奪われ、攻撃者のアドレスは0X5167で、賞金もエアドロップで得たものを上回る超高額だった。
まだ終わっていないのです。 5 日後の午後 3 時 2 分、私たちはまた驚くべき発見をし、Fomo3D の第 1 ラウンドが終了し、グランプリは剥奪されました。誰かに撮られたのでしょうか?いいえ、彼らは同じ方法を使って高額賞金を獲得しました。なぜ? Fomo3D Awardsを見ていると、見覚えのある光景を発見しました。特賞を引くと、連続異常ブロック群が出現し、この連続異常ブロック群内のメッセージ数が激減する。最後に、同じよく知られたマイナーが勝利したトランザクションをブロックします。ラストウィナー終了前後にも同様の異常ブロックが出現し、勝利ニュースも同じマイナーによるものであったが、この時点で偶然であることが判明した。私たちは、マイニングプールが本当に Fomo3D を不正行為しているのではないかと疑問に思い始めました。初めてマイニングプールの責任者に連絡し、私たちが知っているすべての情報を相手方と照合した結果、マイニングプールは今回の不正行為には関与していないことが判明しましたが、この異常なブロックには大きな秘密が隠されています。その秘密は、異常ブロック内のメッセージはすべて同じコントラクトを呼び出しており、非常に奇妙なトランザクションが保存されているということです。すべてのトランザクションのガスは通常のガスの 100 倍に相当し、このコントラクトの作成者は勝者と同一人物です。
マイナーは不正行為をしていませんでしたが、攻撃者はマイナーのパッケージ化戦略を利用しました。つまり、マイナーは、マイナーにとって最も利益となる、高額な手数料を払ってトランザクションのパッケージ化を優先します。超高額な手数料を発生させることで、ブロックチェーンの混雑を引き起こし、他のプレイヤーをブロックします。攻撃者も非常に賢く、攻撃コントラクトはネットワーク遮断機能を有効にするかどうかをインテリジェントに判断して、メリットを最大化し、コストを最小限に抑えることができます。
つまり、この契約は非常に巧妙に構成されているのです。攻撃者が賞金を手に入れなかった場合でも、多くのマイニング プールのアプリケーション プールにそのトランザクションが存在し、適切な時期が来ると、これらのトランザクションは非常に高額なトランザクション手数料を伴うトランザクションになります。
したがって、このゲームの抜け穴により、以前のメイン賞金プールとサブ賞金プールが簡単に攻撃される可能性があります。もう 1 つの質問があります。最後の勝者が親コントラクトを攻撃したことは誰もがまだ覚えています。なぜ最後の勝者をコントラクトのアドレスとして必要とするのですか?実際、この攻撃親コントラクトは、多くの種類の Fomo3D ゲームを攻撃できる一般的な親コントラクトです。 Fomo3D がリリースされてから 2 日目、何者かがエアドロップ宝くじの抜け穴を発見し、攻撃に成功しました。
あなたは世界トップのハッカーと対戦しており、いつでも損失を被る可能性があります。したがって、スマートコントラクトのセキュリティの厳しさは、誰もが想像するものをはるかに超えていますが、誰もが想像する未来の分散型世界は、本当に美しいのでしょうか?分散型世界のメリットを享受する場合、ある程度のコストと新たなセキュリティリスクも発生します。皆さん、ありがとうございました。