PenPie事件分析

本文為機器翻譯
展示原文

2024 年 9 月 3 日,為Pendle Finance 提供收益和 veTokenomics 助推服務的 PenPie 項目遭到攻擊,造成約 2700 萬美元的損失。讓我們來看看這次攻擊是如何發生的細節。

概述

攻擊者地址:

https://etherscan.io/address/0x7a2f4d625fb21f5e51562ce8dc2e722e12a61d1b

攻擊交易:

https://etherscan.io/tx/0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1
https://etherscan.io/tx/0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5

背景

Pendle Finance 允許用戶通過將收益資產分為 PT 和 YT 兩個部分來交易未來收益:

  1. PT(Principal Token):代表基礎資產(本金)的所有權,分離後不再產生收益。

  2. YT(收益代幣):代表直至到期為止從資產中獲得未來收益的權利。

要創建新的PT和YT代幣對,創建者需要在調用PendleYieldContractFactory.createYieldContract()函數時提供SY合約地址。

SY(標準化收益)是Pendle團隊創建的代幣標準(EIP-5115)。它包裝任何產生收益的代幣,並提供標準化接口來與這些代幣的收益生成機制進行交互。

如果用戶想將其代幣存入Pendle協議,以 stETH 為例,他們會將其 stETH 存入Pendle並收到 SY-stETH(stETH 的標準化收益版本)。然後Pendle將此 SY-stETH 拆分為 PT-stETH 和 YT-stETH。

為了實現 PT 和 SY 代幣之間的交易,在 PT 和其對應的 SY 代幣之間創建了Pendle市場 ( PendleMarketV3 )。支付給流動性提供者的激勵代幣是Pendle代幣。通過鎖定Pendle,用戶可以獲得 vePENDLE 治理代幣,其價值與質押的數量和期限成正比(最長 2 年)。

PenPie 是一種建立在Pendle Finance 之上的協議,旨在為用戶提供收益和 veTokenomics 提升服務。與Pendle Finance 集成後,PenPie 專注於鎖定Pendle代幣以獲得Pendle Finance 內的治理權和增強的收益收益。

PenPie 允許將Pendle創建的市場合約註冊到其 PendleStaking 合約中,該合約是代表用戶持有 vePENDLE 頭寸以提高收益率和投票權的主要合約。

漏洞分析

攻擊過程可以分為兩步,通過以下兩筆交易進行分析:

第一筆交易

在第一筆交易中,攻擊者試圖注入一個惡意的 SY 合約,使用PendleYieldContractFactory.createYieldContract()調用來創建新的 (PT, YT) 對,然後使用PendleMarketFactoryV3.createNewMarket()創建一個虛假市場。這個惡意的 SY 合約隨後會被 PenPie 合約調用來領取獎勵。

利用新創建的Pendle市場,攻擊者調用 PenPie 的PendleMarketRegisterHelper合約的registerPenpiePool函數,將該市場註冊到相應的 PenPie 獎勵池。任何由PendleMarketFactoryV3創建的市場都會受到 PenPie 的信任。

註冊後,將創建一個新代幣 PRT ( PenpieReceiptToken ),與Pendle市場 LP 代幣相對應。此外,還將創建一個新的獎勵者合約 ( BaseRewardPoolV2 ) 來管理此Pendle市場 LP 的獎勵 ( Pendle代幣)。然後,有關 stakingToken、receiptToken 和獎勵者的信息將添加到MasterPenpie合約中。

接下來攻擊者調用PendleYieldToken合約的mintPY函數,該函數用於將 SY 代幣化為 PT 和 YT,由於 SY 合約被攻擊者控制,因此攻擊者可以鑄造大量的 PT 和 YT 代幣。

隨後,攻擊者將 PT 和 SY 代幣(SY 代幣由攻擊者任意鑄造)提供給Pendle市場來鑄造 LP 代幣( fake_0x5b6c_PENDLE-LPT )。

然後,攻擊者調用 PenPie 的PendleMarketDepositHelperdepositMarket函數來存入Pendle市場 LP 代幣並鑄造相應的 PRT( PenpieReceiptToken )。

第二筆交易

在Pendle和 PenPie 中建立虛假市場和資金池後,攻擊者執行了第二筆交易來竊取資金。首先,他們需要使用來自BalancerVault的閃電貸借入大量 agETH 和 rswETH 代幣。

通過調用 PenPie 中PendleStaking合約的batchHarvestMarketRewards函數,觸發了假Pendle市場的redeemRewards函數和攻擊者 SY 合約的claimRewards函數。在調用claimRewards函數時,攻擊者使用借入的 agETH 和 rswETH 為相應的Pendle市場增加流動性,然後將這些 LP 代幣存入 PenPie 池中,保留 PRT 代幣以供日後提取。實際目的是欺騙 PenPie 質押合約將這些Pendle市場 LP 代幣識別為獎勵代幣。

為了誘使 PenPie 質押合約將新添加的市場代幣(agETH 和 rswETH)識別為獎勵,攻擊者在 SY 合約中設計了自己的getRewardTokens()函數。該函數旨在將這兩個市場代幣作為獎勵,並將由市場的getRewardTokens()函數調用。

由於這兩個代幣( 0x6010_PENDLE-LPT-agETH0x038c_PENDLE-LPT-rswETH )被添加到bonusTokens列表中,因此它們通過queueNewRewards函數中的獎勵合約作為獎勵發送給用戶。

最後,攻擊者調用 MasterPenpie 合約的multiclaim函數,從獎勵者合約中提取所有獎勵。攻擊者可以利用 PRT 代幣(在claimRewards回調中為 PenPie 添加流動性時獲得),通過調用 PenPie 合約中的withdrawMarket將其兌換回市場代幣,並償還貸款。

結論

針對以太坊和Arbitrum的攻擊針對多個 PenPie 礦池,造成約 2700 萬美元的損失。攻擊的根本原因是假設Pendle Factory 合約創建的所有市場都是合法的。這一事件強調了採取嚴格的安全措施和徹底的合約審計以防範此類漏洞的必要性。確保強大的驗證流程對於防止未來的攻擊至關重要。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論