Beosinトレース、2024年2月28日 - Beosinトレースの資金分析プラットフォームによると、ETHチェーンのSenecaUSDプロジェクト契約に脆弱性があり、ハッカーは慎重に構築されたcalldataパラメータを使用してtransferfromを呼び出し、トークンを転送した。ハッカーは、慎重に構築されたcalldataパラメータを使用してtransferfromを呼び出し、プロジェクト契約に認可されたトークンを自分のアドレスに転送し、最終的にETHと交換しました。ハッカーは現在、資金の80%を返却し、残りの20%はホワイトハット報酬として使用されている。以下はBeosinによる攻撃の分析である。
脆弱性分析
Senecaプロジェクトの契約には、performOperations関数があります。performOperations関数を持つSenecaプロジェクトの契約があります。
ユーザがactionに30を指定すると、関数は_call関数を呼び出し、ユーザー指定の呼び出しパラメータを渡す。
_call関数は、呼び出しアドレスのブラックリストをチェックするだけで、呼び出し元や呼び出しパラメータを制限的にチェックすることなく、ユーザーが指定したアドレスから直接関数を呼び出します。呼び出し元や呼び出し引数を制限的にチェックすることなく。
呼び出し元が不正な呼び出し引数を作成した場合、呼び出し元はその関数を呼び出します。呼び出し側がここで不正な呼び出しデータを構築すると、攻撃につながる可能性があります。
攻撃の流れ
このインシデントの攻撃者は、同じテクニックを何度か使って攻撃しました。以下はトランザクション0x23fcf9d4517f7cc39815b09b0a80c023ab2c8196c826c93b4100f2e26b701286の例です。この攻撃者がどのようにコールデータを作成し、攻撃を実行したかを見てみましょう。
1.攻撃者はperformOperations関数を直接呼び出し、次のパラメータを構築しました。actionsは上記の30として渡され、_call関数を呼び出します。
2.Datasデータは
0x000000000000000000000000b05cabcd99cf9a73b19805edefc5f67ca5d1895e23b872dd00000000000000000000000000009cbf099ff424979439dfba03f00b5961
784c06ce00000000000000000000000094641c01a4937f2c8ef930580cf39614
0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.
2番目のcallDataはa0、100(0x64)バイトにあり、これは
callData is:
となります。
3.callDataデータによると、callDataがtransferFrom関数を指定していることがわかります。
0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.transferFrom()として解析できます。0x9cbf099ff424979439dfba03f00b5961784c06ce,0x94641c01a4937f2c8ef930580cf396142a2942dc,1385238431763437306795).
4.前回のトランザクションから。0x9cbf099ff424979439dfba03f00b5961784c06ceはアドレス0x65c210c59b43eb68112b7a4f75c8393c36491f06に最大値を認可したので、ここでは攻撃者が直接0x9cbf099ff424979439dfba03f00b5961784c06ce)トークンの値を自分のアドレス.
5.その後、攻撃者はPT-rsETH-27JUN2024トークンを転送しました。27JUN2024 トークンをETHに送金した。
Fund Tracking
攻撃の後、セネカは、攻撃者に叫んだ。Deployerは攻撃者に資金を返すよう叫び、ホワイトハット報酬として資金の20%を保持できると言いました。攻撃者は、盗まれた1,900ETH以上のうち1,537ETH(80%)を配備者の指定されたアドレスに戻し、残りの370ETH(20%)は攻撃者のアドレスに散在して保持されています。