Ethereum上のYearn FinanceのyETHプールにおける重大な脆弱性により、攻撃者が約900万ドル相当の資産を流出させることが可能になりました。
Check Point Research(CPR)が公開した新たな調査結果によると、プール内部の会計処理の欠陥により、攻撃者は当時約0.000000000000000045ドル相当の16 weiを預け入れただけで、235セプティリオン(235垓)枚のyETHトークンをミントできました。
複雑なエクスプロイト
サイバーセキュリティ研究者らは、プールのキャッシュされたストレージシステムにおける重大な見落としが侵入口を生んだと述べています。
yETHプールは、運用時のガスコストを削減するため、packed_vbs[]として知られる保存済みの仮想残高を使用しています。
プールからすべての流動性が引き出されると、メインの供給量カウンターはゼロにリセットされましたが、キャッシュされた値はリセットされませんでした。この非同期により、ストレージ内に残った幻の残高があるにもかかわらず、プロトコルはプールが空であると誤認しました。
攻撃者は、フラッシュローンを通じて入金と出金の取引を繰り返し循環させることで、この点を悪用しました。各回の処理で小さな残存仮想残高が残り、それが時間とともに蓄積していきました。
プールを完全に空にした後、攻撃者はサポートされている8つのトークンにわたってごく少額を入金しました。プロトコルはこの操作を初回入金として解釈し、微小な投入額ではなく、膨らんだキャッシュ値に基づいてトークンをミントしました。
Ethereum関連の攻撃についてさらに読む:DeFiプロトコルBalacerがサイバー強奪で1億2000万ドル超を喪失
侵害の経緯
侵入は6つの明確な段階で進行しました:
-
フラッシュローンで資産を借り入れる
-
入金・出金サイクルを繰り返して保存済み仮想残高を汚染する
-
すべてのLPトークンをバーンして供給量をゼロに落とす
-
プール全体に16 weiを入金し、欠陥のある「初回入金」ロジックを発動させる
-
新たにミントされたyETHを基礎資産と交換する
-
収益をETHに換え、ローンを返済し、資金洗浄を行う
攻撃者は最終的に、wstETH、rETH、cbETHを含む盗まれたLSD資産を、複数のDEXを通じてETHに交換した後、一部をTornado Cashに送金しました。
CPRは、この事件が複雑なAMMの仕組みとガス節約の最適化によって生じるリスクを浮き彫りにしていると指摘しました。
「防御側にとって、このエクスプロイトは、複雑なシステムにおける正しさには、うまくいく経路(ハッピーパス)だけでなく、すべての状態遷移を明示的に扱うことが必要だという点を改めて示しています」と彼らは述べました。
同社はまた、この侵害は取引シミュレーション、シーケンスレベルの監視、異常なミント挙動の自動ブロックによって防げた可能性があると付け加えました。
翻訳元: https://www.infosecurity-magazine.com/news/yearn-finance-yeth-pool-exploit/