PANewsは4月22日、Web3セキュリティ企業GoPlusがXプラットフォーム上で、4月16日にイーサリアム上のDeFiプロジェクトR0AR(@th3r0ar)が契約バックドアにより約78万ドルを盗まれたと述べたと報じた。プロジェクト関係者は本日、インシデントレポートを発表しました(レポートでは資金は回収されたとされていますが、アドレスとトランザクションハッシュはまだ公開されていません)。これは典型的な契約裏口事件です。ユーザーは、バックドア コントラクト (0xBD2Cd7) を防ぎ、コントラクトに干渉しないように注意する必要があります。
この契約(R0ARStaking)はデプロイ時にバックドアが仕掛けられており、悪意のあるアドレス(0x8149f)には最初から引き出し用の多額の$1R0Rが組み込まれていました。悪意のあるアドレスは、まず少額の deposit() と harvest() を実行し、悪意のある EmergencyWithdraw() を実行する準備をしました。コントラクト内のコードロジックによると(下図参照)、rewardAmount>r0arTokenBalance(コントラクト残高)であるため、rewardAmountがコントラクト内のトークン残高に割り当てられ、その後、コントラクト内のすべてのトークンが悪意のあるアドレス(0x8149f)に転送されます。同様に、LP トークン コントラクト内のすべての lpToken も悪意のあるアドレスに転送されます。最後に、userInfo.amount を 0 に設定します。コントラクト内の userInfo はマッピング構造であり、そのアドレスは userInfo のキー (uid と msg.sender) のハッシュによって計算された動的アドレスです。バックドアは、コントラクトが展開される前に悪意のあるアドレスを使用して計算されたと推測できます。