
攻撃内容の分析
攻撃内容の分析
今回問題となっている契約はフルコンボ自体の代理店契約にある。攻撃プロセス全体は非常に簡単です。攻撃者は、Furucombo の AaveV2 プロキシの論理アドレスを設定することで、Furucombo プロキシ コントラクトを通じて呼び出されるすべてのロジックを攻撃者自身の悪意のあるコントラクトに転送し、その結果、資金が窃取されます。
しかし、物事がそれほど単純であれば、この分析は言及する価値がありません。問題は想像よりもはるかに複雑です。
上図のように、攻撃者のエントリはフルコンボのbatchExec関数内にありますので、まずbatchExec関数を解析してみましょう。
上記は、Furucombo プロキシ コントラクトのbatchExec 関数の具体的な実装です。_preProcess コントラクトと _postProcess コントラクトは、それぞれ呼び出しの前後に何らかのデータ処理を実行し、特定の呼び出しロジックは関与しませんが、ここでは無視できます。主にコアの _execs 関数を観察します。
execs コードを分析すると、関数の主なロジックが configs 配列内のデータをチェックし、configs 配列内のデータに従ってデータに対して何らかの処理を実行することであることがわかります。ただし、上記の攻撃者の呼び出しデータを振り返ると、攻撃者の呼び出しデータ内で configs のデータが 0 アドレスであることを見つけるのは難しくありません。
ここにはトリックがあります。アドレス 0 は EOA アドレスであるため、EOA アドレスへの関数呼び出しはすべて成功しますが、結果は返されません。このトリックと組み合わせると、execs 関数内の構成データに関する部分を一時的に無視できます。最後のコア _exec 関数を直接参照してください。
_exec 関数のロジックも非常にシンプルで、_to アドレスを確認した後、指定された _to アドレスにデータを直接転送します。そして、攻撃トランザクションの分析を通じて、この _to アドレスが確かに正式な法的アドレスであることがわかります。
最後のステップは、正式に指定された AaveV2 プロキシ コントラクトの初期化関数である _to アドレスを呼び出し、攻撃者自身の悪意のあるアドレスを AaveV2 プロキシ コントラクトの論理アドレスとして設定することです。フルコンボ コントラクトの分析を通じて、通話プロセス全体に重大なセキュリティ ポイントはなく、通話のアドレスに対してもホワイトリスト チェックが実行されることがわかりました。この場合、問題は、呼び出される対応するプロキシ ロジック、つまり AaveV2 プロキシ コントラクト内にのみ存在すると考えられます。
AaveV2 プロキシ コントラクトの初期化関数のロジックを直接分析します。
初期化関数はパブリック関数であり、先頭で _implementation が 0 番地かどうかをチェックし、0 番地であればエラーをスローしていることがわかります。このチェックの目的は、実際には _implementation が設定されているかどうかを確認することであり、設定されている場合は再度設定することはできません。この設定によれば、初期化関数は 1 回しか呼び出すことができないことを理解するのは難しくありません。 AaveV2 プロキシが _implementation を設定したことがない限り、この呼び出しは成功しません。フルコンボは対応する_implementationを設定していないというのは本当ですか?これを念頭に置いて、トランザクション内の状態の変化を調べます。次のように:
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc に保存されている内容がトランザクションで変更されており、書き込まれた内容はまさに攻撃者自身の悪意のあるコントラクト アドレス 0x86765dde9304bea32f65330d26615 であることがわかります。 5c4fa0 c4f04。
また、0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc は、_implementation データの格納アドレスです。
要約する
要約する
副題
提案
現在、Furucombo 攻撃により、Furucombo コントラクト (0x17e8ca1b4798b97602895f63206afcd1fc90ca5f) へのトークンを承認しているユーザーは資金を失う危険にさらされています。
参考リンク:
参考リンク:
攻撃トランザクション:https://approved.zone/
攻撃トランザクション:
https://ethtx.info/mainnet/0x6a14869266a1dcf3f51b102f44b7af7d0a56f1766e5b1908ac80a6a23dbaf449