Back to Blog

#5: Platypus Finance:幸運で3度の攻撃を生き延びる

February 15, 2024
6 min read

要約

Platypus FinanceはAvalancheブロックチェーン上のAMMプロトコルです。以下のように3回攻撃を受けています。

  • 2023年2月17日、不適切なソルベンシーチェックが原因でハッキングされ、約905万ドルの総損失が発生しました。このうち、BlockSecの支援により240万ドルが回収されました。約38万トークンがAaveコントラクトに留まり、その後返還されました。
  • 2023年7月12日、ステーブルコイン間の価格乖離を無視したことにより、約5万ドルの損失が発生しハッキングされました。
  • 2023年10月12日、価格操作攻撃を受け、約220万ドルの損失が発生しました。エクスプロイターとの交渉後、盗難された資金の90%が返還されました。

プロジェクトはこれらすべての攻撃を生き延びた幸運に恵まれています。これらの3つのエクスプロイトの分析によると、慎重な監査やより積極的なセキュリティ対策が実施されていれば、論理的な欠陥は回避可能であったことが示されています。

Attack One

このセキュリティインシデントを理解するには、いくつかのスマートコントラクトのワークフローを理解する必要があります。大まかなプロセスは以下の通りです。

  • ユーザーはトークンをプールに預け入れることでLPとなり、LPトークンを受け取ります。
  • LPトークンはMasterPlatypusにステーキングすることで報酬を受け取ることができます。このプロセス中にLPトークンはMasterPlatypusコントラクトに転送されます。
  • LPトークンは、資産効率を向上させるために、他の資産を借りるための担保として使用できます。

以下の図は、その相互作用を示しています。

脆弱性分析

脆弱性は、MasterPlatypusコントラクト内の emergencyWithdraw という名前の関数に存在します。緊急時には、この関数は MasterPlatypus コントラクトにステーキングされたLPトークンを引き出すために使用されるべきです。この関数では、コントラクトは引き出しを許可するためにユーザーが Solvent であるかどうかをチェックします。このロジックは、ユーザーに不良債務があるかどうか(つまり、担保が債務の支払いに使用できるかどうか)をチェックします。そうでない場合、ユーザーはステーキングされたLPトークンを引き出すことができます。

しかし、このロジックには欠陥があります。ユーザーが Solvent であるということは、ユーザーの担保がその債務を支払えることを意味するだけです。しかし、それは、ステーキングされたトークンを緊急で引き出した後も、ユーザーがSolventであるかどうかはチェックしません。攻撃者はこの欠陥を利用して資産を借り入れ、その後(債務を返済せずに)ステーキングされたLPトークンを緊急で引き出すことができます。詳細はImmunefiのブログで分析されています。

攻撃分析

攻撃トランザクションを例として、攻撃プロセス全体を示します。

ステップ1:AAVEから4400万USDCのフラッシュローンを借りる

ステップ2:4400万USDCをプールに預け入れ、LP-USDCを取得する

ステップ3:LP-USDCをMasterPlatypusに預け入れる

ステップ4:LP-USDCを担保としてUSPを借り入れる

ステップ5:emergencyWithdraw関数を実行して攻撃を開始する

攻撃者はUSP債務を支払うことなくLP-USDCを取得します。

ステップ6:プールからLP-USDCを引き出し、USDCを取得する

ステップ7:USPを売却して利益を得る

しかし、利益は攻撃コントラクト内に残っていました。実際には、攻撃者は利益を得るために新しい受取アドレスを設定することができます。

BlockSecの救出

攻撃者は利益を攻撃コントラクト内に残したことに気づきました。さらに、攻撃コントラクト内には資産を引き出すためのロジックはありませんでした。しかし、攻撃コントラクトの脆弱性を発見し、それを利用して一部の資産をハックバックして引き出すことができました。

具体的には、フラッシュローンコールバック関数にアクセス制御があり、誰でもこのコールバック関数を呼び出すことができます。これは多くのMEVボットが攻撃される根本原因でもあります。

さらに、コールバック関数内で、攻撃コントラクトはPlatypus financeプールコントラクトにUSDCトークンを承認します。そして、このプールコントラクトはアップグレード可能です!

上記の2つを組み合わせることで、以下の手順で攻撃コントラクト内のUSDCを救出できます。

  • Platypus financeプールコントラクトをアップグレードして、コントラクト内のUSDCを引き出すロジックを含める。
  • 攻撃コントラクトのコールバックを呼び出して、プールコントラクトにUSDCを承認する。
  • プールコントラクトは、攻撃コントラクトからUSDCを転送するために、(攻撃コントラクトによって実行される)任意の関数を置き換えることができます(攻撃コントラクトがプールコントラクトにUSDCを承認しているため)。

240万USDCを救出したトランザクションはこちらです。

その他の2回の攻撃

その他の2回の攻撃に関する詳細は、以下のリンクを参照してください。

要約

3回の攻撃は、プロトコルの異なる脆弱性を悪用しました。他のベンダーがプロトコルの監査を行っていても、攻撃者は抜け穴を見つけ、プロトコルを正常にエクスプロイトしました。幸いなことに、一部の資産は救出されましたが、常に運が良いとは限りません。プロトコルとユーザー資産を保護するためには、攻撃監視や自動応答を含むより多くのセキュリティ対策を採用する必要があります。

このシリーズの他の記事を読む:

Sign up for the latest updates
Newsletter - April 2026
Security Insights

Newsletter - April 2026

In April 2026, the DeFi ecosystem experienced three major security incidents. KelpDAO lost ~$290M due to an insecure 1-of-1 DVN bridge configuration exploited via RPC infrastructure compromise, Drift Protocol suffered ~$285M from a multisig governance takeover leveraging Solana's durable nonce mechanism, and Rhea Finance incurred ~$18.4M following a business logic flaw in its margin-trading module that allowed circular swap path manipulatio

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.