Back to Blog

#5: Platypus Finance:3度の攻撃を幸運で乗り切る

Code Auditing
2024年2月15日
6 min read

概要

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

  • 2023年2月17日、誤ったソルベンシーチェックによりハッキングされ、合計約905万ドルの損失が発生しました。このうち、240万ドルはBlockSecの支援により救出されました。約38万トークンがAaveコントラクトに滞留していましたが、その後返還されました。
  • 2023年7月12日、ステーブルコイン間の価格差を無視したことにより、約5万ドルの損失を伴うハッキングが発生しました。
  • 2023年10月12日、価格操作攻撃を受け、約220万ドルの損失が発生しました。攻撃者との交渉の結果、盗まれた資金の90%が返還されました。

このプロジェクトがこれらすべての攻撃を生き延びたのは幸運と言えます。これら3件のエクスプロイトの分析から、綿密な監査やより積極的なセキュリティ対策が講じられていれば、論理的な欠陥を回避できた可能性があることが示されています。

攻撃1

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

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

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

脆弱性分析

この脆弱性は、MasterPlatypusコントラクト内のemergencyWithdrawという名前の関数に存在します。緊急時には、この関数を使用してMasterPlatypusコントラクトにステークされたLPトークンを引き出す必要があります。この関数では、コントラクトはユーザーがSolvent(支払い能力がある)かどうかをチェックし、引き出しを許可します。このロジックは、ユーザーに不良債権があるかどうか(つまり、担保が負債を返済するために使用できるかどうか)をチェックします。もしなければ、ユーザーはステークされたLPトークンを引き出すことができます。

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

攻撃分析

ここでは1つの攻撃トランザクションを例に、攻撃の全プロセスを示します。

ステップ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ボットが攻撃を受ける根本原因でもあります。

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

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

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

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

その他2件の攻撃

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

まとめ

3件の攻撃はいずれもプロトコルの異なる脆弱性を悪用したものでした。他の一部のベンダーがプロトコルを監査していたにもかかわらず、攻撃者は依然として抜け穴を見つけ、プロトコルの攻撃に成功しました。幸いにも一部の資産は救出されましたが、常に幸運に恵まれると期待することはできません。プロトコルとユーザー資産を保護するために、攻撃の監視と自動対応を含む、より多くのセキュリティ対策を採用すべきです。

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

Sign up for the latest updates
損失約557万 USD:X100 FreezerとNEMへの攻撃 | BlockSec Weekly
Security Insights

損失約557万 USD:X100 FreezerとNEMへの攻撃 | BlockSec Weekly

本週次レポートでは、2026年10月19日–2026年10月25日にEthereumとBNB Chainで発生した2件のセキュリティインシデントを取り上げます。フラッシュローンを資金源としたX100 Freezerのガバナンス乗っ取りと、BNB Chain上のNEMトークンの流動性プールに影響を及ぼした税の精算処理の欠陥を検証します。本レポートの対象範囲における推定損失額は合計で約557万 USDです。内訳は、代表例として取り上げるX100のトランザクションによる損失が約475万 USD、NEMプールのインシデントによる損失が約82.0万 USDです。この合計には、別途報告された、その後のX100からの資金奪取は含まれません。

約387万 USDの損失:Autheo NetworkとUNCXへのハッキング | BlockSecウィークリー
Security Insights

約387万 USDの損失:Autheo NetworkとUNCXへのハッキング | BlockSecウィークリー

この週次レポートでは、2026年10月12日–2026年10月18日に発生した3件のセキュリティインシデントを取り上げます。推定損失額の合計は約387万 USDです。Autheo Networkでは秘密鍵の侵害により約176万 USD、Qubic Walletでは脆弱なシード生成により約130万 USDの損失が発生しました。また、Ethereum、BNB Chain、Base、Robinhood Chain上のUNCX NetworkのSmart Token Vesting V2コントラクトでは、会計処理上の誤りにより約80.7万 USDの損失が発生しました。重点的に取り上げるUNCXの分析では、シェア総数の計算に欠陥があり、異なるトークン対シェア比率で作成されたベスティングのトランシェが混同された結果、共通プールからの過剰な引き出しが可能になった仕組みを説明します。

約54万2,000ドルの損失:MakerDaoBotへの攻撃 | BlockSec週間ニュース
Security Insights

約54万2,000ドルの損失:MakerDaoBotへの攻撃 | BlockSec週間ニュース

本レポートは2026/10/05~10/11にEthereumで発生したセキュリティ事故1件を扱う。推定損失は約54.2万ドル。攻撃コントラクトは悪意あるアダプターを展開し、アクセス制御のないMakerDaoBot関数に渡して、ボット内部のMakerDAO残高への操作権限を付与させた。アダプターは旧ETH-Aオークション4件を決済し、ETH-A担保200単位をWETHに変換。攻撃コントラクトがWETHをETHに戻し、攻撃者へ200 ETHを送金した。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit