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ではなく、mempoolを使用してトランザクションをブロードキャストしたこと。
- リスクのあるすべての資金ではなく、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 Securityをローンチしました。これは、攻撃を監視するだけでなく、リアルタイムで脅威を積極的にブロックするように設計されています。Phalconの戦いで磨かれた能力は、20件以上の実際のハッキングを阻止し、1400万ドル以上の資産を救済することで、その有効性が証明されています。このイノベーションにより、すべてのステークホルダーは、投資を保護するための積極的な対策が講じられていることを知り、より安心して眠ることができます。
このシリーズの他の記事を読む:
- リードイン: 2023年のトップ10「驚くべき」セキュリティインシデント
- #1: Flashbots Relayの脆弱性を悪用したMEVボットの収穫
- #2: Euler Financeインシデント: 2023年最大のハック
- #3: KyberSwapインシデント: 極めて巧妙な計算による丸め誤差の巧妙な悪用
- #4: Curveインシデント: コンパイラエラーにより、無害なソースコードから不正なバイトコードが生成される
- #5: Platypus Finance: 3度の攻撃を幸運で乗り越える
- #6: Hundred Financeインシデント: 脆弱なフォークされたプロトコルにおける精度関連エクスプロイトの波を触媒する
- #7: ParaSpaceインシデント: 業界で最も重大な攻撃を阻止するための時間との戦い
- #9: MEVボット 0xd61492: 捕食者から獲物へ、巧妙なエクスプロイト
- #10: ThirdWebインシデント: 信頼されたモジュール間の非互換性により脆弱性が露呈



