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