3月22日、ステーブルコインプロトコルResolvは、攻撃を受けたことを確認しました。攻撃者は、8,000万枚以上の$USR(Resolvのステーブルコイン)を不正に発行し、約2,300万ドルの利益を得ました。Beosinのセキュリティチームは、攻撃の流れと資金の流れを分析し、その結果を以下に共有します。
攻撃フロー分析
今回の事件では、攻撃者は3回のコイン発行取引を行い、約8000万米ドルをコインとして発行しました。主な2つの取引のハッシュ値は以下のとおりです。
1. 0xfe37f25efd67d0a4da4afe48509b258df48757b97810b28ce4c649658dc33743
2. 0x41b6b9376d174165cbd54ba576c8f6675ff966f17609a7b80d27d8652db1f18f
攻撃者のトランザクションは、ミント処理を完了するために使用されるcompleteSwap関数によって検証されます。この関数の具体的な実装については、元のリンクを参照してください。
ユーザーがUSDCを入金すると、SERVICE_ROLE関数はそのユーザーのために発行するUSRの数量を決定します。この関数は最小発行量をチェックしますが、最大発行量に制限はありません。上限や担保比率の制限がないため、SERVICE_ROLE関数は任意の量のUSRを発行できます。
SERVICE_ROLEはオフチェーンプログラムであり、オープンソースではないため、オフチェーンインフラストラクチャの脆弱性や秘密鍵の漏洩によって潜在的な攻撃が発生する可能性があります。さらに、オンチェーンセキュリティチェック(タイムロックなし、マルチシグネチャ検証なし、最大発行比率制限なし)が欠如しているため、Resolvプロトコルのセキュリティ防御が弱体化し、単一障害点であるSERVICE_ROLEに問題が発生した場合の緩和策や復旧策が一切講じられていません。
盗難資金の追跡
Beosinは、アドレスタグとオンチェーン取引データを組み合わせ、ブロックチェーンのオンチェーン調査・追跡プラットフォームであるBeosin Traceを通じて詳細な資金追跡調査を実施し、その結果を以下のように公表した。
ハッカーのアドレスは0x04A288a7789DD6Ade935361a4fB1Ec5db513caEdで、3月21日に...
彼らはそれぞれ25.34ETHと26.85ETHを受け取ったが、これはおそらく今回の攻撃の初期資金源だったと思われる。Beosinのインテリジェンス分析によると、初期資金を提供したアドレス0xda79e97c5ada3fdb196e7c49194ce5352ba48861は、取引所Wizard Swapのアドレスである。
攻撃を開始した後、ハッカーは発行した$USRをETHに変換し、保管およびオンチェーンプロトコル(Uniswapなど)を介した送金に利用しました。この記事の公開時点では、資金が保管されていたメインアドレスは0x8ed8cf0c1c531c1b20848e78f1cb32fa5b99b81cで、残高は11,408.85 ETH(約2,300万ドル)でした。
資金の流れを以下の図に示します。
Beosin Traceによる盗難資金の流れの分析チャート
上記のアドレスはすべて、Beosin KYTによって高リスクアドレスとしてマークされています。例えば、アドレス0x04a288:
ベオシンKYT

