據(jù) Beosin Alert 監(jiān)測(cè),Pendle 上的 DeFi 協(xié)議 Penpie 遭受黑客攻擊,損失約 2700 萬(wàn)美元的加密資產(chǎn)。Beosin 對(duì)此次事件進(jìn)行了如下簡(jiǎn)析:
攻擊者利用 market 合約中的 claimRewards 函數(shù)進(jìn)行重入質(zhì)押,以增加 staking 合約的余額,然后將多余的代幣和質(zhì)押資產(chǎn)提取出來(lái)獲利。
具體步驟如下:
1. 攻擊者首先創(chuàng)建一個(gè)攻擊合約,并通過(guò)官方的 factory 構(gòu)建對(duì)應(yīng)的 market 合約。
2. 調(diào)用 staking 合約的 batchHarvestMarketRewards 函數(shù)對(duì)該 market 進(jìn)行獎(jiǎng)勵(lì)更新。
3. 在更新獎(jiǎng)勵(lì)時(shí),會(huì)回調(diào)攻擊合約的 claimRewards 函數(shù),利用該函數(shù)進(jìn)行重入,將閃電貸獲取的資產(chǎn)進(jìn)行質(zhì)押,導(dǎo)致 staking 合約的資產(chǎn)數(shù)量產(chǎn)生差異,并將多余的部分提取出來(lái)。
4. 攻擊者將質(zhì)押的資產(chǎn)提取出來(lái),并歸還閃電貸,從而實(shí)現(xiàn)獲利。