イーサリアムのサンドイッチ攻撃の約70%に関与するJaredfromsubway MEVボットは、自動システムが攻撃者が管理するコントラクトにトークンの使用を承認した後、アローワンスドレインにより750万ドル以上を失った。
Jaredfromsubway.ethとして知られるこのボットは、収益性の高い取引ルートの一部と思われる一連のトランザクションを承認した。それらの権限は有効なままであり、攻撃者はその運用に関連するコントラクトからラップドイーサと2つの主要なステーブルコインを引き出すことができた。
この事件により、イーサリアム最大の裁定取引システムの一つが、自らの盗難を承認するという事態が実質的に引き起こされた。また、市場を評価し、コントラクトを承認し、数秒以内にトランザクションを実行しなければならない自動取引業者が直面する脆弱性も浮き彫りになった。
オンチェーンセキュリティ企業のBlockaidは、攻撃者はボットの秘密鍵を侵害したり、広く使用されている分散型金融プロトコルの欠陥を悪用したりしたわけではないと述べた。代わりに、攻撃はボットが潜在的な利益を特定・追求するために使用するルールを標的にした。
Blockaidによると、攻撃者はボットが通常取引する可能性のある市場に似た偽のトークン、流動性プール、サポートコントラクトを展開するために数週間を費やした。
偽の資産には、ラップドイーサリアム、USDC、USDTのバージョンが含まれており、収益性の高いシグナルを生成するよう設計された取引ルートを介してペアリングされていた。Jaredfromsubway.ethはそれらのルートを検出し、予想される取引の一環としてヘルパーコントラクトがトークンを移動することを許可する通常のプロセスに従った。
初期のトランザクションの一部は想定通りに権限を使用し、ボットのシステムが受け入れ続けるパターンを確立するのに役立った。後のトランザクションでは承認が未使用のまま残された。
Jaredfromsubway.eth MEVボットが資金を抜き取られた経緯(出典:Doug Colkitt)
この違いにより、攻撃者はERC-20承認を通じた突破口を得た。ERC-20承認とは、別のアドレスまたはスマートコントラクトが、承認したアカウントに属する指定された量のトークンを使用することを許可するものだ。
この権限は、使い切られたり、減額されたり、取り消されない限り、元のトランザクション後も有効なままとなる。
攻撃者が十分な未使用アローワンスを蓄積すると、コントラクトはERC-20のtransferFrom関数を使用して、ボットのアカウントから実際のWETH、USDC、USDTを移動させた。
オンチェーンの記録には、ボットに関連するコントラクトから合計約92 WETH、143,000ドルのUSDS、149,000ドルのUSDTに上る繰り返しの送金が示されている。資金は攻撃者が管理するアドレスに向けられた。
Yearn Financeの開発者Bantegは、最終的な攻撃を従来のトークンスワップではなくアローワンスドレインと表現した。調整コントラクトが数十のサブコントラクトにわたって出金関数を呼び出し、利用可能なトークンを送金する前にボットの残高と残りの権限を確認した。
収益の一部はその後、資金の追跡を困難にする暗号資産ミキシングサービスであるTornado Cashを通じて送金された。
Jaredfromsubway.ethは2023年から運用されており、イーサリアムの最大抽出可能価値(MEV)市場で最も著名な参加者の一つとなっていた。
MEVとは、ブロックチェーンのトランザクションが処理される順序を変更することで生み出される収益を指す。サンドイッチ攻撃では、ボットが保留中の取引を特定して先に資産を購入し、その価格を押し上げる。その後、ユーザーのトランザクションがより不利な価格で実行され、ボットが売却して差額を得る。
これにより、Jaredfromsubway.ethはイーサリアムで最も目立つサンドイッチ攻撃ボットの一つとなったが、その同じ自動化が自らの資金への侵入経路となった。
個々の取引業者への損失は小さいかもしれない。しかし、数万件のトランザクションにわたって、この戦略は取引コストやネットワーク手数料を増加させながら相当な収益を生み出すことができる。
報告によると、これらの攻撃は取引業者に年間推定6,000万ドルのコストを課しており、その約70%がJaredfromsubway.ethとして特定された単一のオペレーターに関連していた。
The post Ethereum's Jaredfromsubway MEV bot drained after approving its own $7.5M theft appeared first on CryptoSlate.

