2023年4月9日、SushiSwapは検証されていない外部パラメータによりエクスプロイトの標的となりました。総損失額は約330万ドルです。
イーサリアム上で多くのユーザーを抱える主要なプロトコルとして、このようなトッププロトコルでさえ、コントラクトのアップグレード中に重大な新問題が発生する可能性があります。これはDeFiコミュニティにとって、セキュリティは常に最優先事項であるべきだというリマインダーです。 さらに、このセキュリティインシデントはホワイトハットセキュリティ研究者による救済の試みによって引き起こされ、コミュニティ内でかなりの議論を巻き起こしました。ここでは、このインシデントについて簡潔に紹介し、2023年のトップ10セキュリティインシデントの1つとして取り上げます。
背景
SushiSwap
有名なDEXであるSushiSwapは、Uniswapに対してバンパイアアタックを仕掛け、絶大な成功を収めました。ピーク時にはTVLは80億ドルに達し、現在でも約4億ドルを維持しています。
承認(Approval)
要するに、***「コントラクトがあなたのウォレットから特定のトークンにアクセスし、送金する許可」***のことです。
利便性のために、多くのコントラクトはデフォルトで無制限の承認を求めます。セキュリティリスクを懸念する多くのユーザーは、さまざまなプロトコルに少額しか預けませんが、これらのユーザーはプロトコルに無制限の資金承認を与えています。プロトコルが侵害された場合、アカウント内の承認されたすべてのトークンが失われる可能性があります。
脆弱性
検証されていない外部パラメータ
RouteProcessor2コントラクトのprocessRoute()は、ユーザーにパラメータrouteを通じてコールフローを完全に制御させます。
そしてuniswapV3SwapCallback()では、safeTransferFrom()のパラメータfromは、ユーザー提供のrouteからデコードされます。
その結果、RouteProcessor2コントラクトを承認していたユーザーは資産を失いました。
攻撃プロセス
このインシデントは複数の攻撃トランザクションを伴いましたが、最初の攻撃トランザクションを例に説明します。 トランザクション: 0x43ff7e01423044cfb501b4fe9ef1386725c0ddc117dadd6e6620cb68bdeaf4f9
- 攻撃者は、慎重に構築された長い引数
routeを使用して、脆弱なRouteProcessor2コントラクトのprocessRoute()を呼び出しました。
processRouteInternal()は、ユーザー提供のルートに基づいてInputStreamを作成します。
- トランザクションは、攻撃者の
routeに従い、swapUniV3()に到達しました。poolはstreamからデコードされており、攻撃者がどのpoolでswap()するかを制御し、それをlastCalledPoolとして設定したことに注意してください。
- これにより、攻撃者がデプロイした悪意のあるコントラクトが呼び出され、攻撃者は悪意のある
calldataを渡してRouteProcessor2のuniswapV3SwapCallback()にコールバックしました。 - uniswapV3SwapCallback()は
msg.senderチェックを必要としますが、lastCalledPoolはすでに悪意のあるコントラクトに設定されていたため、ハッカーはチェックをバイパスしました。重要なのは、safeTransferFrom()のパラメータfromが、攻撃者が構築したcalldataからデコードされたことです。
- 被害者の資産は、攻撃者がデプロイした悪意のあるコントラクトに転送されました。
議論を呼んだホワイトハット救済
ユーザー名@trust__90によるホワイトハットがこの問題を特定し、資金の救済を試みましたが、この救済の試みが悲劇を引き起こしたことは言及する価値があります。
- プライベートRPCではなく、メンプールを使用してトランザクションをブロードキャストしたこと。
- リスクのあるすべての資金ではなく、100 Etherのみを救済しようとしたこと。
これにより、MEVボットやその他の攻撃者が複数のコピーキャットトランザクションを実行する道が開かれ、ほとんどの資金が流出しました。これらの出来事の後、@trust__90は批判に直面し、自身の行動を擁護しようとしました。
People are saying all kinds of terrible things while being uninformed so allow me to share more details.
— Trust (@trust__90) April 10, 2023
I've initiated coordination privately with Immunefi officials 3 hours before the white-hack. 90 minutes later, I realized the asset is currently used by the frontend and…
BlockSecによる救済
この攻撃において、私たちは100 Etherを救済し、その資金を被害者である0xsifuに返還しました。
現在までに、私たちは20件以上の実際のハッキングを阻止し、1400万ドル以上の資産を救済しました。Hey, @0xSifu We have successfully blocked an attack transaction and rescued 100 Ether. Please get in touch with us.
— BlockSec (@BlockSecTeam) April 9, 2023
セキュリティに関する推奨事項
アップグレードは常に監査を受けるべき
これはDeFiコミュニティにとって、セキュリティは常に最優先事項であるべきだというリマインダーです。監査はセキュリティを保証するものではありませんが、監査がないことが安全を保証するわけでもありません。
承認問題の緩和策
2023年には、承認攻撃に関連する多くのインシデントが発生しました。この機会に、承認の管理の重要性を改めて強調します。 セキュリティプラクティスとして、必要最低限の金額のみを承認するか、利便性を優先する場合は、必要額よりわずかに多い金額を承認することが推奨されます。
BlockSecのMetaSuitesは、便利な承認診断機能を提供しています。さらに、Revoke Cashのようなツールを使用して、承認ステータスを定期的に確認することができます。
モニタリングと自動応答メカニズムの導入
イーサリアムはダークフォレストであり、DeFiコミュニティの誰もが、セキュリティ専門家でさえ、さまざまなリスクや課題に直面しています。 2023年、私たちはPhalconをリリースしました。これは、攻撃を監視するだけでなく、リアルタイムで脅威を積極的にブロックするように設計された、業界初の自動応答システムです。Phalconの戦術的にテストされた機能は、20件以上の実際のハッキングを阻止し、1400万ドル以上の資産を救済したことでその有効性を証明しています。このイノベーションにより、すべてのステークホルダーは、投資を保護するための積極的な対策が講じられていることを知って、より安心して眠ることができます。
このシリーズの他の記事を読む:
- リードイン:2023年のトップ10「驚くべき」セキュリティインシデント
- 第1位:Flashbotsリレーの脆弱性を悪用したMEVボットの収穫
- 第2位:Euler Financeインシデント:2023年最大のハック
- 第3位:KyberSwapインシデント:極めて巧妙な計算による丸め誤差の巧妙な悪用
- 第4位:Curveインシデント:コンパイラエラーが単純なソースコードから不正なバイトコードを生成
- 第5位:Platypus Finance:幸運な一撃で3度の攻撃を生き延びる
- 第6位:Hundred Financeインシデント:脆弱なフォークされたプロトコルにおける精度関連エクスプロイトの波を触媒
- 第7位:ParaSpaceインシデント:業界で最も重大な攻撃に対する時間との戦い
- 第9位:MEVボット0xd61492:捕食者から獲物へ、巧妙なエクスプロイト
- 第10位:ThirdWebインシデント:信頼されたモジュールの間の互換性により脆弱性が露呈



