今回私たちはイーサリアム DeFi の暗い森から抜け出し、960 万ドルを完璧に節約しました
編集者注: この記事は以下から引用しましたチェーンニュース ChainNews (ID:chainnewscom)、許可を得て掲載しています。
編集者注: この記事は以下から引用しました
チェーンニュース ChainNews (ID:chainnewscom)
チェーンニュース ChainNews (ID:chainnewscom)
、許可を得て掲載しています。
脚本: サム・サン、アレックス・ウェイド、スコット・ビグロー、ティナ・ジェン、シャオピン
2020 年 9 月 15 日、運用チームは脆弱なスマート コントラクトから 960 万ドルを救出するために一晩中協力しました。彼らの物語は以下で語られます。
Sam Sun 別名 samczsun Readme
いくつかのスマートコントラクトで起こったストーリーを要約してレビューしてみましょう。
もちろん、何も面白いことは期待していませんでした。過去数週間にわたり、無数のイールドファーミングクローンが全く同じ売り文句を投げかけるのを見てきました。「あなたのトークンを私たちの手に渡せば、あなたは次の仮想通貨億万長者になれるかもしれません」。ほとんどのクローン プロジェクトは、十分に監査されたコードをフォークしたものにわずかな調整を加えただけであり、場合によっては悲惨な結果を招くこともあります。
しかし、その喧騒の中に、これまで見たことのないコードがいくつかありました。この記事の主題であるスマート コントラクトは、当時 960 万ドル以上の価値がある 25,000 イーサ以上を保持しており、ロジックのエラーを見つけようと必死になっている人にとってはやりがいのある狩りとなるでしょう。
ETHを送金するためのコードをざっと調べたところ、一致するものが2つ見つかりました。そのうちの 1 つは ETH をハードコードされたトークン アドレスに転送したため、無視できます。 2つ目は、ETHを送信者に転送するバーン機能です。この機能の使用状況を追跡した結果、誰でも無料で自分用のトークンを鋳造でき、汗をかかずにこのスマート コントラクト内のすべてのエーテルと引き換えにトークンを燃やすことができることがわかりました。心臓の鼓動が早くなりました。突然、問題は深刻になりました。
私のスマート コントラクトは Lien Finance プロトコルです。残念ながら、彼らのチームは匿名です。インスタント メッセージングでサポートされている唯一のプラットフォームは Telegram ですが、その Telegram チャネルの管理者が開発者なのか、それとも単なる初期のサポート者なのかはわかりません。この脆弱性を誤って間違った人に知らせたくないのです。
彼らのサイトをもう少し調べてみると、彼らがコード監査のために ConsenSys Diligence および CertiK と協力していることがわかりました。これは良い手段のように見えますし、ConsenSys Diligence と CertiK は監査中に間違いなく開発者と対話しました。私はすぐに、ConsenSys Diligence のセキュリティ エンジニア John Mardlin (別名 maurelian) と Telegram でチャットしました。
チャットを開始して返信を待つのはあまりにも苦痛です。残念ながら、モーレリアンは反応しないまま時間が経過しました。彼は眠ってしまったようだ。絶望的になった私は、ETHSecurity Telegram チャネルにメッセージを送信して、ConsenSys 内に眠っていない人がいる場合は、できるだけ早く連絡してくださいと尋ねました。
数分後、過去に何度か一緒に仕事をしたことのある人物、ConsenSys Diligence の別のセキュリティ エンジニア、Alex Wade から返信が届きました。
アレックス・ウェイドがすべてを語ります
ルームメイトがドアをノックする音が聞こえたとき、枕に頭をぶつけたところです。 「サムはETHSec Telegramチャンネルで、ConsenSys Diligenceの誰かを知っている人はいるかと尋ねました。」
サムとアレックスは今夜は長い夜になるかもしれないと言いました、そしてそれはそうでした
それがサムだと聞いた瞬間、これは良いことではないと思いました。数か月前にセットアップした、Lien と通信するためのチャネルと電子メール アドレスを見つけました。彼らのチームは匿名のチームであり、何もないよりはあったほうが良いでしょう。
私はまだ半分眠っていました。サムはチャットで詳細に立ち入りたくないので、Zoom での会話を求めています。なぜベッドから起きたのかを後悔しながら、私は状況の深刻さを次のように判断しました。
5分後、気を取り直して仕事に取り組むためにコーヒーが必要であることがわかりました。サムと私は一緒にコードをレビューしました。サムは自分のマシンの問題を確認するサンプル テストを準備していました。私たちの会話は、考えられるオプションについての議論に移りそうです。お金を節約するために自分たちでやります。
Lien チームに連絡し、身元を開示するよう依頼し、ユーザーに資金を引き出すよう促します。
どちらもあまり満足のいく選択ではありません。ダン・ロビンソンとパラダイムリサーチパートナーのゲオルギオス・コンスタントプロスによるイーサリアムのDeFiダークフォレストに関する議論を読むと、最初の動きは非常に危険です(
連文中国語版) の記事にあるように、私たちの取引が盗まれる可能性は非常に高いです。 2 番目のオプションは、公式声明がこの問題への注目を集め、攻撃者に機会を与えるのとほぼ同じくらい危険です。私たちに必要なのは 3 番目のオプションです。イーサリアム DeFi ダーク フォレストの記事の一部を思い出しながら、サムはアンバーデータのエンジニアリング担当副社長のスコット ビグローに連絡しました。「本当にこの種の苦境に陥った場合は、アンバーデータのエンジニアリング担当副社長のスコット ビグローに相談することをお勧めします。これ。あるテーマに関するセキュリティ研究者は、欺瞞の目的をより適切に達成できる一連のプロトタイプ実装戦略を持っています。」
スコット・ビグロー著
私は参加しました
イーサリアム DeFi ダークフォレスト
記事のお金救出作戦でダークフォレストスナイパーに負けたので再戦を熱望していました。私はフロントランナーの監視に時間を費やし、少なくとも私が個人的にテストにつぎ込んだ 200 ドルをかけて、平均的なフロントランナーを出し抜くことができそうなシンプルなシステムを考案しました。サムが夜遅くに私に連絡して、「1時間ほどお時間をいただいてもよろしいでしょうか」と心から言ったとき、私は準備を整えて、挑戦する準備ができていました。私は、技術的な調整をいくつか行い、何時間もかけて、ユーザーの資産を何千ドルも節約し、その達成感を味わい、ぐっすり眠るにはどうすればよいか、という図を思い描いてきました。
サムがこのスマート コントラクトを私に共有したとき、それらの計画は瞬時に崩壊しました。約 25,000 ETH (960 万ドル相当)。私はこの再戦をやりたいと思っていますが、私の壊れたコード行は 960 万ドルの資産を想定して設計されたものではありません。
過去数か月間、私はただ 1 つの目的のためにマイナーとのつながりを試みてきました。それは、この種のホワイト ハット レスキュー取引を行うことです。資金がフロントランナーに盗まれないように、鉱山労働者が鉱山にトランザクションを書き込むのを手伝う必要があった時代があったとすれば、それは今です。幸いなことに、ティナ・ジェンと私は過去数か月間力を合わせてこの協力関係を追求してきました。当時、この救出作戦が成功する可能性はほとんどありませんでしたが、試してみる価値はありました。ティナをこの救出作戦に参加させ、マイニング プールと協力してプライベート トランザクションをマイニングしました。
ティナ・ジェンが読みます
コードネーム「ボブキャット」と呼ばれるカリフォルニアの山火事により、私は自宅から避難していたところです。未知のビーチドリンクを飲みながら、薄暗い太平洋から送られる波の音を聞いていました。サムのテレグラムの DM で、私は元の世界に戻りました。暗い現実: 「資金は危険にさらされており、横取りされる可能性があります。」私はここ数週間、サムとスコットと一緒に「マイナー抽出可能な値」MEV に関する研究プロジェクトに取り組んできましたが、彼らがリクエストを送信する前にそれを推測しました:イーサリアム上のホワイトハットトランザクションを保護するための直接チャネル mempool (一連の保留中の未確認トランザクション)は、「フロントランナー」による略奪から保護されている「暗い森」です。
これは私たちの戦略をマイナーに公開する必要がある危険な動きであるため、私たちはまず匿名の Lien チームから許可を得ようと試みることにしました。 Alex が ConsenSys の内部チャネル経由で連絡を取ろうとしたとき、私たちも CertiK との連絡を試みました。
米国の Certik の監査人が起床まであと 4 時間であることはわかっていますが、時間がなくなりつつあります。私は CertiK についてあまり知りませんが、いくつかのアジアのプロジェクトを監査していることだけは知っていたので、CertiK 中国チームに連絡してみました。 「DeFi the World」と「Yellow Hats」の2つのWeChatグループに音声メッセージを残しました。私のプライベート チャットでは 30 分以内に 4 件のメッセージを受信しました。これにより、私の WeChat 友人の ID が本物の CertiK 最高技術責任者である Zhaozhong Ni であることが確認されました。私は 5 人の CertiK チーム メンバーからなる WeChat グループに引き込まれましたが、当時はまだ関連プロジェクトや脆弱性を開示できませんでした。暴露リスクと潜在的な責任を最小限に抑えるため、ホワイト ハット オペレーションに参加できるのは 1 人の Certik メンバーのみです。公式メールによる最終確認の後、CertiK のエンジニアリング責任者である Georgios Delkos が会話に加わりました。
Georgios の助けにより、Alex は Lien チームにすぐに連絡し、彼らの身元を確認することができました。私たちは彼らに現在の厳しい状況をできるだけ早く理解してもらい、この脆弱な資金を救うためにマイニングプールに直接協力することに同意を得ました。検討の結果、リエンチームは資金の救済や早期警告声明の発表は危険すぎることに同意し、このオプションを進めることに同意しました。
今、私たちは十分なインフラが整備され、協力してくれるマイニングプールをできるだけ早く見つける必要があります。どのマイニングプールを探すべきですか?このマイニングプールの連絡役は誰で、時間をかけずにこのアクションを実行するのに役立つ技術的な決定を迅速に下すことができますか?
私たちは SparkPool のことを考えました。彼らは、私たちが望むサポートを簡単に提供できる Taichi Network と呼ばれる公共インフラを構築していることを知っています。私は、以前にメンプールのセキュリティインシデントの調査を手伝ってくれた Xinghuo Mining Pool の共同創設者である Shaoping Zhang と個人的にチャットすることにしました。
30分後、Shaoping氏はこう答えた:「取引のためにホワイトリストを開くということですか?申し訳ありませんが、できません。」 うーん、翻訳に迷ったので、中国語の「ホワイトハット」ホワイトハットと「ホワイトリスト」ホワイトリストは少し絵に思えます。
「今、1000万ドルがかかっている。私はサムチュスンと連絡を取っている」と私は再び具体的な詳細は明かさずに状況を伝えようとした。
「あなたたち二人は世界を救っているのですか?採掘プールからの助けが必要ですか?」 私は事故に安堵し、シャオピンは喜んで手伝いますと冗談を言いました。公式メールで確認された後、Shaoping は私たちのマラソン Zoom 電話会議に参加し、多数のスパーク マイニング プール開発者から技術サポートを受けました。
シャオピンの自己申告
昼食後、昼寝をしようとしたところ、Tina から WeChat メッセージが届きました。「Spark Mining Pool はホワイトハット取引に役立ちましたか?」最初読み間違えたのですが、取引用のホワイトリストでした。これまでホワイトハット取引について当社に連絡した人は誰もおらず、「ホワイトハット取引」の具体的な状況については詳しくありません。ティナがさらに詳しく説明した後、プライベート トランザクション サービスが必要であることがわかりました。たとえば、ホワイト ハット ハッカーは、DeFi スマート コントラクトを保存するためにトランザクションを送信したいと考えていますが、他人がそれを盗むのを防ぐために、ブロードキャストするためのマイニング プールが必要です。トランザクションの場合は、トランザクションをブロックに書き込みます。
Taichi Network ではプライベート トランザクション機能を構築していますが、この機能はまだ開発中であり、まだテストされていません。私は開発チームにホワイト ハッカーの要求について伝え、プライベート トランザクション機能は数時間以内に本番稼働する必要があるという緊急性を強調しました。当社の開発者は、最善を尽くしてすぐに作業に取り掛かると述べています。プライベートトランザクション機能の開発は2時間で完了し、バグ修正にさらに時間を費やしました。
内部テストが完了した後、hitehat.taichi.network エンドポイントを Scott Bigelow に送信して、ホワイト ハット タスクを完了しました。
スコット・ビグロー著
Spark Mining Pool は新しいホワイト ハット API を立ち上げるために残業をし、サムと私は 4 つの連続する署名付きトランザクションを生成するためのスクリプト プログラミングも完了しました。これらのトランザクションを順番に処理しても、25,000 ETH 自体は取り出されませんが、(「エラー」が生成された) 30,000 SBT+LBT トークンが Lien チームに転送され、Lien チームはこれらのトークンを ETH に戻すための最終トランザクションに送信できます。
無限に鋳造可能なSBT+LBTトークンをETHの代わりにLienチームに転送することで、一般化した強制攻撃(組織再編に遭遇した場合)を混乱させるための隠蔽手段としてより多くのトランザクションを使用し、960万ドルの収益を今後もポケットに入れ続けることができます。一瞬でもありません。
4 つの署名付きトランザクションを生成した後、サムと私はさまざまなマルチパーティ トランザクション シミュレーション ツールを使用して一連のアクションを検証することに多くの時間を費やしました。これら 4 つのトランザクション プログラムは、合計データ量が 1.5 KB 未満であり、960 万米ドルの資産を節約するためのキラーであり、Spark Pool がこれらのトランザクションをキャプチャする前に、誰もこれらのトランザクションに気づかれないようにします。
私は Sparkpool のホワイトハット エンドポイントを無意味なトランザクションでテストしましたが、実行は公平でした。トランザクションは mempool には表示されず、突然 Sparkpool のブロックの 1 つに現れました。それは水蒸気が直接氷に変化するのを見ているようなもので、途中の厄介な液化プロセスは完全に目に見えません。
トランザクション生成スクリプトを微調整して、トランザクションを Spark プールの新しいエンドポイントに直接送信できるようにしました。いよいよ、行動を開始します。一瞬躊躇しましたが、それが私たちにできる精一杯の努力だったことは間違いありません。 960 万ドルを失うかもしれませんが、後悔はしていません。IntelliJ で「実行」をクリックしました。理由はわかりませんが、ノードが状況の深刻さを理解してからしばらく時間を費やすため、プロセス全体に時間がかかると予想していました。しかし実際にはそうではなく、トランザクションはミリ秒単位で送信されます。
Zoom 通話の参加者全員が Etherscan を必死に更新し始めましたが、Etherscan チームがこの 3 分間のトラフィックの急増を認識したとは思えません。トランザクションがあるのは Spark Pool だけであり、この目的に使用されるのは Spark Pool のハッシュレートの一部だけであるため、私たちにできることは冷や汗をかきながら待つことだけです。他のマイナーによって採掘されたすべてのブロックが私たちを怖がらせます。 Zoom通話では、誰かが緊張した笑いを伴いながら、ブロックを掘り出した鉱山労働者の名前を読み上げます。トランザクションがブロックに書き込まれるまでの約 15 ブロックでは、数年、数時間のように感じましたが、最終的には、ロールバックなしで順次マイニングを行い、完璧なトランザクションを完了しました。
私たちは、ブロックの上にどんどんブロックが重ねられていくのを安堵しながら見守り、ブロックの再編成に対する懸念はすぐに消え去りました。 Lien チームは現在、システム全体の資金を清算するのに十分な SBT + LBT トークンを保有しており、サムは救出の最終段階の調整を担当しています。
トークンを Lien チームに転送することに成功し、強制や試みなどの兆候は見つからなかったので、プライベート チャットですぐに良いニュースを彼らと共有しました。彼らはトークンの受信を確認し、すぐにトランザクションを送信して、スマートコントラクトにロックされている ETH の大部分を取り出します。数秒後、この保留中のトランザクションが Etherscan に表示されました。
https://etherscan.io/tx/0xe99ccb0b21854b65a2fa283638ab9ef01962b61c3310b596b4597bf22b911a43
進行状況バーの円を眺めながら、私はその行動を振り返る機会を得ました。スマート コントラクトの検討として始まったものは、最終的には世界中の専門家を集めて協力する「プライベート ライアン」作戦に変わりました。 Alex と Georgios がいなかったら、Lien の開発者と連絡を取ることはできなかったでしょう。スコットがいなかったら、私たちの救出活動はずっと前に困難に陥っていたかもしれません。 Tina がいなかったら、CertiK や Spark Pool と連絡を取ることはできませんでした。スパーク プールがなければ、ダンが数週間前の記事で書いた悲劇を繰り返すことになるでしょう。
それでも火曜日の夜遅く、私たちの一見不可能に見えるチームは同じ目的のために協力し、960万ドルを正当な所有者に確実に返還するためにたゆまぬ努力を続けました。過去 7 時間にわたる私たちの取り組みは、保留中のトランザクションとこの円形の進行状況バーで最高潮に達しました。
画像の説明ここをクリックようやく暗い森から抜け出すことができました。この記事は、多くの人々の努力の成果を記録しています。窮地を救ってくれた Alex Wade、Scott Bigelow、Tina Zhen、Georgios Delkos、SparkPool と、この記事をレビューしてフィードバックを提供してくれた Alex Obadia と Dan Robinson に感謝します。この操作の背後にある技術的な詳細に興味がある場合は、


