被盗约 2700 万美元的加密资产,Penpie 为何被黑客「血洗」?
撰文:Beosin
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.攻击者领取记录的奖励。
- 申链财经
免责声明:投资有风险,入市须谨慎。本资讯不作为投资建议。