注意安全風險

作者: Beosin

封面: Photo by  Adrien  on  Unsplash

2024 年 09 月 04 日,根據 Beosin Alert 監控顯示,建立在 Pendle 上的 DeFi 協議 Penpie 遭到駭客攻擊,被盜取約 2700 萬美元的加密資產。 Beosin 安全團隊第一時間對事件進行了分析,結果如下。

Penpie 是一個與 Pendle Finance 整合的 DeFi 平台,專注於鎖定 PENDLE 代幣以獲得 Pendle Finance 內的治理權和增強的收益收益。 Penpie 旨在為 Pendle Finance 用戶提供收益和 veTokenomics 提升服務。

事件相關資訊

攻擊交易

0x56e09abb35ff12271fdb38ff8a23e4d4a7396844426a94c4d3af2e8b7a0a2813

攻擊者地址

0xc0Eb7e6E2b94aA43BDD0c60E645fe915d5c6eb84

攻擊合約

0x4aF4C234B8CB6e060797e87AFB724cfb1d320Bb7

被攻擊合約

0x6e799758cee75dae3d84e09d40dc416ecf713652

漏洞分析

這次事件主要是攻擊者利用 market 合約中 claimRewards 函數重入質押以提高 staking 合約餘額,再將 staking 合約中多餘的代幣和質押資產提取以獲利。

攻擊流程

攻擊準備階段:

1. 攻擊者透過攻擊合約呼叫以 Penpie 協定中的 Factory 合約創建了新的 market 以及 Yield,其中將 SY 設定為攻擊合約。

0xfda0dde38fa4c5b0e13c506782527a039d3a87f93f9208c104ee569a642172d2

2. 攻擊者進行閃電貸了四種代幣,為後續抵押資金儲備。並呼叫 staking 合約中的 batchHarvestMarketRewards 函數對新建立的 market 進行獎勵更新。

3. 在 batchHarvestMarketRewards 函數中,對 market 進行獎勵更新時,會呼叫 market 合約中的 redeemRewards 函數。並且合約記錄了 redeemRewards 函數前後的餘額變化。

4. 在 market 的 redeemRewards 函數中,會呼叫到 SY 合約中的 claimReward 函數。然而 SY 合約是攻擊合約,攻擊合約透過這個函數完成了對 Staking 合約的重入,將閃電貸的資金抵押到 Staking 合約,共 4 次。

5. 這時回到 Staking,由於 redeemRewards 函數前後餘額差明顯,觸發了_sendRewards 函數,_sendRewards 函數最後調用的_queueRewarder 會將多餘的代幣授權給 market 合約並記錄為獎勵。

6. 攻擊者領取紀錄的獎勵。 

7. 攻擊者將質押的資產透過 withdraw 函數提取,並歸還閃電貸進行獲利。 

Pendle 隨後發布攻擊分析報告:發現漏洞後立即暫停合約,使 1.05 億美元資產免受進一步損失。

資金追蹤

在發文截止時,被竊資金約 2,700 萬美元,Beosin Trace 追蹤發現攻擊者已將被盜資金全部轉換為 ETH,資金先存放在 0x2f2dDE668e5426463E05D795f5297dB334f61C39 地址。

截止發文,Penpie 攻擊者地址向 Tornado Cash 陸續轉移了 2900 枚 ETH(價值約 690 萬美元)。

目前,Penpie 專案方也透過鏈上向駭客喊話,希望與駭客進行溝通返還被盜資金,如果返還可以支付賞金。並附上了聯絡方式。

總結

針對本次事件,Beosin 安全團隊建議:1. 對合約的相關函數增加防重入修飾器;2. 不使用白名單對傳入代幣進行校驗的話,最好使用統一的包裝合約重新生成代幣; 3. 在專案上線前,強烈建議選擇專業的安全審計公司進行全面的安全審計,以規避安全風險。

免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。