スラッシングされてもMEVが欲しい場合、どのようなことが起きるのか
MEVボットが2,500万ドルの被害にあった犯人の手法とは? 2023-04-12 DIVE INTO CRYPTO - #60
このニュースレターでは、「ワントピックで個人的にクリプトの面白いと思うところをゆるく深堀りする」をコンセプトに話題のプロジェクトやトピックをやさしく解説します。毎週水曜7:00定例更新です。著者のTwitterアカウントはこちらです。
お知らせ
2023年4月12日12:00~Twitterスペースで対談を行います!興味がある方はぜひご参加ください。
おはようございます。今週もクリプトメルマガをお届けいたします。
今回は、MEVにまつわる事件の概要を解説します。
MEVは非常に分かりにくい仕組みですが、着実にニュースの量も増えていて、もちろんすべてのユーザーにメリットをもたらす可能性のあるトピックです。
このニュースレターでも最近頻繁に取り上げています。よろしければそちらも併せて御覧ください。
それでは、今週もよろしくお願いいたします!
MEV-Boostリレーの脆弱性が悪用され2,500万ドルの被害が発生、犯人はバリデーターだった
Twitterのスレッドでも解説しています。よろしければそちらも御覧ください。
そもそもMEVとは
MEVとは、ブロック生成時に、バリデーターやボットがTxを入れ替えたりして抽出できる利益を最大にした値や手法のことを指します。
主にアービトラージがそのほとんどです。DEXで行われるトランザクションをボットが監視しており、トランザクションの順番を入れ替えて、自分のトランザクションをガス代を多く払い割り込ませることで、元々利益を得るはずだったユーザーの利益を奪います。
ただし、こうした悪い面だけでなく、DEX間でアービトラージを行うことで価格が市場価格で安定するようになることや、レンディングの清算が速やかに行われるようにするといった良い面も備えています。
これはブロックチェーンの仕組み上、発生しうる抽出できる利益であり、根絶することは難しいですし、そうするべきではないものです。
今回の被害は、サンドイッチ攻撃と呼ばれるMEVを抜き取る手法が利用されいます。
サンドイッチ攻撃とは、被害者のトランザクションの前後に意図的にDEXにおけるトークン価格の操作を目的にトランザクションを割り込ませることです。
これによって、価格差を生み出しサンドイッチ攻撃の攻撃者はMEVを得ます。
トランザクションの順番としては、以下のようになります。
Tx1:MEVボットが買い注文で価格を吊り上げ
Tx2:被害者は意図した価格よりも高い価格で交換
Tx3:MEVボットが再び売却、価格差で利益(MEV)を得る
なおフロントランニングとは、主に最初の価格操作のみを目的にしたトランザクションです。
一般的なサンドイッチ攻撃は、上述のとおりMEVボットが利益を得ます。
しかし、今回の被害の標的は「MEVボット」でした。
事件の概要
事件が起こったトランザクションを時系列で並べると以下のようになります。
Tx1:MEVボットが買い注文で価格を吊り上げる
Tx2:”被害者を装った”買い注文
Tx3:MEVボットのバックランを犯人がフロントランニング
Tx4:Tx3によってMEVボットのバックランが失敗する
なぜバリデーターは2500万ドルものMEVを奪うことができたのか
トランザクションの流れだけでは、バリデーターがMEVを奪った仕組みが分かりにくいと思います。
重要なポイントは、3番目のトランザクションで、バリデーターがMEVボットのトランザクションに対して割り込みを行ったことです。
そして、その犯人のトランザクションの内容が、MEVボットが釣り上げた価格を利用して、トークンの逆スワップを実行したことによって、2500万ドル(2,454ETH)の利益を出すに至りました。
以下の図がわかりやすいです。
つまり、
MEVボットが価格を釣り上げたトークンがある(ここではSTG)
犯人は釣り上がったトークンの価格を悪用し逆スワップする
MEVボットの扱う価格が当初の価格と同じかそれ以下になる(失敗する)
以上のような流れです。
今回問題となったMEV-Boostのリレーの脆弱性とは
MEV-Boostの脆弱性を理解することで、今回なぜ起こり得なかった問題が起きてしまったが分かります。
ただし、ぼくもこの仕組みは技術的に理解できている自身があまりありません。それを前提に以下をお読みください。脆弱性の原因に興味が無い方はこのセクションだけ読み飛ばすことをおすすめします。
こちらのツイートで解説されているものを参考としています。
結論としては、MEV-Boostのリレーが、バリデーターにトランザクションの中身を公開してしまう脆弱性があったためです。
どのようにして、バリデーターはリレーからトランザクションの中身を公開させたのかを解説します。
前提知識:PBSとMEV-Boost
前提として、MEV-Boostは、PBS(Proposer-Builder Separation)という仕組みを現在のEthereumにもたらします。
PBSは、ブロックをPropose(提案する人)と、ブロックをBuild(トランザクションの順番を決めて箱を作る人)に別れさせることです。前者は、プロポーザーとかバリデーターと言われます。後者は、ビルダーとかブロックビルダーと言われます。
PBSを実現する目的は、提案者(基本的にはバリデーター)が、署名するブロックの中身を、そのブロックを署名するまで見ることができないようにすることです。MEV-Boostを利用していない普通のバリデーターはブロックの中身を見て自由にトランザクションの順番をいじれてしまいます。PBSはこれを防止します。
MEV-Boostは、バリデーターのMEVで獲得できる金額をブーストする役割があり、プロックビルダーが作成したブロックのヘッダー部分のみを受け取ります。そのため、MEV-Boostを利用しているバリデーターは、基本的には最も収益性の高いヘッダーが送られてくることを信頼する必要がある仕組みとなっています。
MEV-Boostにおいてバリデーターがトランザクションの中身を見た方法
しかし、今回バリデーターは、MEV-Boostを利用しているのにも関わらずトランザクションの中身を見ています。
ブロックビルダーによってトランザクションが束ねられた(バンドル)されたものを分解することは難しいです。その理由は以下の2つ。
ブロックに2回署名することになりスラッシングの対象となるため
リレーよりも早くブロックをネットワークに提出する競争に勝つ必要がある
しかし、今回の犯人のバリデーターは、2つ目の方の「リレーとのレース」に勝利してしまいます。
MEV-Boostのリレーは、バリデーターがブロックに正しく署名している限り、すべてのトランザクションを返すという脆弱性があり、これをバリデーターはつきました。
バリデーターによって、署名されたブロックが無効であればネットワークに受け入れられることはなく、リレーとのレースは成立しません。しかし、バリデーターは、”Parent_root”と”Stata_root”をゼロに設定することでこれを実現させてしまいます。(この仕組みどうやって見つけたかは不明)
リレーは、ブロックをブロードキャストすることができなかったため、バリデーターに対して、バンドルを分解し、トランザクションの中身を見れる状態にして、送信してしまいます。
このトランザクションの中身に、今回の被害にあったMEVボットのトランザクションが含まれていた、ということになります。
バリデーターは、このようなトランザクションが含まれることを狙って今回の事件に及んでいます。今回MEVボットが被害の対象となりましたが、これはユーザーに対しても起こり得ました。
バリデーターの悪質性
今回の犯人のバリデーターは、たった18日前に32ETHをデポジットしてバリデーターになっていました。
しかもそのデポジットの入金もとは、プライバシーネットワークのAztecが利用されています。
犯人の素性は秘匿されおり、今回の行動を悪意を持って計画的に行われた可能性があります。
今回犯人のバリデーターは、MEV-Boostを利用しています。MEV-Boostを利用すると、通常はトランザクションはバンドルされており、ブロックビルダーが作った順序どおりのバンドルTxをバリデーターは承認するはずです。
しかし、バリデーターは上述のような脆弱性をついて、トランザクションの中身を見てしまいます。
なお、このような脆弱性が悪用されないようにパッチが公開されています。
スラッシングされてもMEVが欲しい場合はどうなる?
MEVによって得られる額が高額であれば、バリデーターであってもユーザーだけでなくボットのトランザクションに対しても恣意的な操作ができてしまう、ということが今回の事件で明らかになりました。バッチによって解消されたようですが、今後別の手法で引き起こされる可能性があると考えています。
これは、トランザクションを安心して送ることができなくなるだけでなく、ネットワークのセキュリティ自体をも危険にさらし、ブロックチェーンへの信頼が維持できなくなることにも繋がります。
今回のパッチによって軽減されるようになったとのことですが、もしバリデーターが今後もスラッシングされることをもいとわずにMEVを獲得しようとなると、どういうことが起きるでしょうか?
スラッシングされるコスト < MEVで獲得できる利益
という式が成り立つと、悪意のあるバリデーターはおそらくMEVを獲得するために今回と同じ手法ではなくともMEVを得るための動機があります。
したがって、この問題は完全に解決できていない問題だと思われます。今後も事件が起きるたびに議論の対象となるでしょう。
悪意のあるエンティティからMEVが抜かれるのを防ぐというMEVブロッカーというのも現れているので、この分野は引き続き取り上げられるでしょう。
https://twitter.com/lawrence_crypt/status/1644490262968963072?s=46&t=oM7SSBXkRr1OcXzES-SlcA
さて、本日は以上です。
よろしければ「わかりやすい」、「ここが面白かった」といった感想をTwitterでシェアして教えてください。より良いニュースレターにしていくための参考にさせていただきます🙇♂️
コメント欄について
本ニュースレターは、各記事の配下にあるコメント欄を積極的に活用しております。Twitterではいいにくい、直接DMするほどでもない、でも質問したいこと、誰かの意見を聞きたいことはありませんか?ぜひご利用ください。
以下の「Subscribe」をクリックするとメールでこのコンテンツが届きます。バックナンバーはこちらからご覧いただけます。
免責事項
このニュースレターは、教育目的の情報提供を主旨としており、金融に関するアドバイスではありません。ご自身での調査やデューデリジェンスが必要です。