By: 九九@慢雾安全团队
Background
Slow Fog Security Teamのインテリジェンスによると。2024年9月4日、分散型流動性収入プロジェクト Penpieが攻撃され、攻撃者は約3000万ドルの利益を得ました。

(https://img.jinse.cn/7291718_image3.png)
(https://img.jinse.cn/7291718_image3.png)
(https://x.com/Penpiexyz_io/status/1831058385330118831)
予備知識
ペンドルファイナンスは分散型金融収入取引プロトコルで、ロックインされた総価値は45億ドル以上です。このプロトコルはMagpieとの統合に成功しており、収益機会を最適化し、veTokenomicsモデルを強化するように設計されています。これに基づき、ペンピープロジェクトは流動性マイニング機能を導入し、ペンドルファイナンスの市場でパッシブリターンを可能にします。
ペンドルファイナンスには、以下の重要な概念が含まれています:
次のとおりです。PT(プリンシパル・トークン):は将来のある時点での元本を表します。PTを保有するということは、元本を所有する権利を持ち、満期時に換金できることを意味します。例えば、1年後に満期を迎える1PT-stETHのオプションを所有している場合、1年後に1ETH相当のstETHと交換することができます。
YT (Yield Token):。将来の収益を表します。YTを保有することは、原資産によって生成されたリアルタイムの収益をすべて所有することを意味し、いつでもペンドルで蓄積された収益を手動で回収することができます。
SY (Simple Yield):あらゆる収益資産をラップするために使用されます。strong>利子を受け取るトークンをラップするための契約。あらゆる利子付きトークンの利回り生成メカニズムと相互作用するための標準化されたインターフェイスを提供します。
LPT(流動性プロバイダートークン):原資産に流動性を提供するための信任状として機能する、流動性のあるマーケットプレイスを表します。
PRT (Pool Reward Token):ペンピープールにユーザーが預けたLPTトークンの預託券を表します。
根本的な原因
この事件の核心は、ペンパイが、新しいペンドルマーケットプレイスに登録する際ペンドルマーケットを新規登録する際に、ペンドルファイナンスが作成したすべてのマーケットが合法であると誤って思い込んでいたことです。しかし、ペンドルファイナンスのマーケット作成プロセスはオープンで、誰でもマーケットを作成することができ、SY契約アドレスなどの重要なパラメータはユーザーがカスタマイズすることができます。これを利用して、攻撃者は悪意のあるSY契約を含むマーケットプレイス契約を作成し、Penpieプールが報酬を受け取るために外部のSY契約にコールを行う必要があるメカニズムを利用して、フラッシュクレジットの助けを借りてマーケットプレイスとプールに大量の流動性を追加し、報酬額を人為的に膨らませ、利益を得ました。
攻撃のステップごとの分析
攻撃のステップごとの準備
トランザクションハッシュ:0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1
1.まず、攻撃者はPTを作成します。まず、攻撃者はPendleYieldContractFactoryコントラクトのcreateYieldContract関数を使用してPTとYTのイールドコントラクトを作成し、SYを攻撃コントラクトのアドレスとして設定します。PendleMarketFactoryV3コントラクトのcreateNewMarket関数が呼び出され、対応するマーケットコントラクト0x5b6c_PENDLE-LPTが作成されます。

。次に、攻撃者はPendleMarketRegisterHelperコントラクトのregisterPenpiePoolを使用してペンピープールを登録し、Deposit Voucher PRTトークンコントラクトと関連するrewarderコントラクトを作成し、ペンパイにプール情報を登録します。

3.次に、攻撃者はmintHelperコントラクトを呼び出して、大量のYTコントラクトを鋳造します。その後、攻撃者はYTコントラクトのmintPY関数を呼び出し、攻撃コントラクト(SYコントラクト)が返す為替レートに応じて、大量のYTとPTを鋳造します。

4.この直後に、攻撃者はPTを市場に入金します。0x5b6c_PENDLE-LPTに入金し、LPトークンを鋳造します。

5.最後に、攻撃者は預託金と引き換えにLPトークンをペンピープールに預け入れます。

フォーマルアタック
トランザクションハッシュ:0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5
1.攻撃者はまず、Lightning Loanを通じて大量のagethとrswethトークンを貸しました。

2.Penpieプールのこのアクションは、マーケット契約0x5b6c_PENDLE-LPTのredeemRewards関数をトリガーします。

3.redeemRewards関数では、SY関数の外部呼び出しであるclaimRewards関数が呼び出されます。関数への外部呼び出しである redeemRewards 関数では、SY 契約 (攻撃契約) の claimRewards 関数が外部から呼び出され、その間に攻撃者はライトニングローンの資金を使用してリワードトークンに流動性を追加し (攻撃契約のリワードトークンは、意図的に 2 つのマーケットトークン、0x6010_PENDLE-LPT と 0x038c_PENDLE-LPT に設定されています)、取得したマーケットトークンをPenpieプールに入金し、対応するデポジットバウチャートークンを取得します。

4.次に、これらの新しく預け入れられたマーケットトークンをペンパイに預け入れます。次に、Penpieプールに新しく預け入れられたマーケットトークンは、計算された報酬として扱われ、その報酬は、RewarderコントラクトのqueueNewRewards関数を通じて、Rewarderコントラクトに転送されます。

0x5b6c_PENDLE-と同様に、攻撃者はペンパイプールへのマーケットトークンの投入を要求します。攻撃者はLPTマーケットに入金している唯一の人物なので、MasterPenpieコントラクトのmulticlaim関数を即座に呼び出して、LPTトークンのこの部分を Rewarderコントラクトから引き出すことができます。

5.最後に、攻撃者はMasterPenpieコントラクトからLPTトークンを引き出すことができます。最後に、攻撃者はPendleMarketDepositHelperコントラクトのwithdrawMarket関数を使用して、ステップ3で取得したデポジットクレデンシャルのPRTを燃やし、マーケットトークンを換金し、前のステップで引き出した報酬とともに流動性からそれらを取り除き、最終的に基礎となるアセットトークン(agETHとrswETH)にアクセスして利益を実現します。

概要
このセキュリティインシデントにより、Penpieのマーケットプレイス登録プロセスにおける不十分なチェックと、Pendle Financeのマーケットプレイス作成ロジックへの過度の依存が露呈し、攻撃者が悪意のある契約によって報酬分配メカニズムをコントロールし、過剰な報酬を得ることができるようになりました。Slow Fogのセキュリティチームは、プロジェクト・オーナーがマーケットを登録する際に厳格なホワイトリスト検証メカニズムを追加し、検証済みのマーケットのみが受け入れられるようにすることを推奨します。さらに、外部からのコントラクト呼び出しを含む重要なビジネスロジックについては、同様のインシデントの再発を防ぐために、監査とセキュリティテストを強化する必要があります。