
投稿者 : yudan@スローフォグセキュリティチーム
副題
バックグラウンドフィード
攻撃プロセス
攻撃プロセス
1. 攻撃者は、USDT/WETH などの Sushi Swap の取引ペアを選択し、流動性を追加して対応する SLP (USDT/WETH Liquidity Proof、以下 SLP) を取得し、取得した SLP と別の少額を使用します。新しい Sushi Swap トランザクション ペアは、新しいトークン プールの SLP1 (WETH/SLP(USDT/WETH) 流動性証明、以下 SLP1 と呼びます) を取得し、それを Sushi Maker コントラクトに転送します。
2. Sushi Swap の変換関数を呼び出します。受信 token0 は最初のステップで取得した SLP で、token1 は WETH です。 Convert 関数を呼び出した後、Sushi Maker コントラクトは token0 と token1 で構成されるトークン プールの burn 関数を呼び出して SLP1 を書き込み、攻撃者が最初のステップで Sushi Maker コントラクトに入力した SLP1 を書き込み、WETH と SLP を取得します。 。
3. Sushi Maker コントラクトの変換関数は、内部 _toWETH 関数を呼び出して、書き込みによって取得されたトークンを WETH に変換します。これは、2 番目のステップで、Sushi Maker コントラクトが書き込みによって SLP と WETH を取得したためです。このうち、WETH は変換する必要がなく、SLP のみ変換する必要があります。この時点で、変換は、最初のステップで攻撃者によって作成されたトランザクション ペアである SLP/WETH トランザクション ペアを呼び出すことによって実行されます。 Sushi Maker コントラクトは変換中にすべての BalanceOf (token0) を WETH に変換するため、ここで渡される token0 は SLP であるため、コントラクトは SLP / WETH トランザクション ペアを通じてコントラクト内のすべての SLP を変換します (交換された SLP には USDT/生成された収入が含まれます) WETH トランザクションと、第 2 ステップの書き込み機能を介してコントラクトによって取得された SLP の各スワップによって)。 SLP / WETH トークン プールは攻撃者によって作成され、攻撃者は初期化時に少量の WETH を追加するだけでよく、交換プロセス中に少量の WETH を Sushi Maker コントラクト内の対応するトランザクションと交換できます。 Sushi Maker トランザクション ペア。すべての SLP が正しいです。
要約する
要約する
攻撃者は、SLP と WETH を使用して新しいトークン プールを作成し、新しいトークン プールの SLP1 を使用して Sushi Maker で変換し、少量の SLP を使用して Sushi Maker コントラクト内のすべての SLP を自分が作成したトークン プールに転送します。一定期間内の当該取引ペアの手数料を全額徴収させていただきます。そして、他の取引ペアでもこのプロセスを繰り返し、利益を上げ続けます。