热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > 软件教程 >Penpie被黑揭秘:原因与攻击步骤详解

Penpie被黑揭秘:原因与攻击步骤详解

来源:互联网 更新时间:2025-04-03 18:33

Penpie 被黑事件分析:原因与步骤详解

2024 年 9 月 4 日,去中心化流动性收益项目 Penpie 遭遇了一次严重的黑客攻击,攻击者从中获利近 3 千万美元。慢雾安全团队对这一事件进行了深入分析,并分享了他们的调查结果。让我们来看看 Penpie 为何被黑,以及攻击者是如何一步步实施攻击的。

前置知识

Pendle Finance 是一个去中心化金融收益交易协议,锁定价值超过 45 亿美元。它与 Magpie 整合,旨在优化收益机会并增强其 veTokenomics 模型。在此基础上,Penpie 项目引入了流动性挖矿功能,帮助 Pendle Finance 的市场实现被动收益。

在 Pendle Finance 中,有几个关键概念需要了解:

PT (Principal Token):代表未来某个时间点的本金。持有 PT 意味着你拥有本金的权利,到期后可以兑换。例如,你有一张一年后到期的 1 枚 PT-stETH 期权,一年后你可以兑换价值 1 ETH 的 stETH。

YT (Yield Token):代表未来的收益。持有 YT 意味着你拥有底层资产产生的实时收益,可以随时在 Pendle 上领取。如果你持有 1 个 YT-stETH,而 stETH 的平均收益率为 5%,一年后你将累积 0.05 个 stETH。

SY (Simple Yield):用于包装任何生息代币的合约,提供标准化的接口与任何生息代币的收益生成机制交互。

LPT (Liquidity Provider Token):代表一个流动性市场,作为提供底层资产流动性的凭证。

PRT (Pool Reward Token):代表 Penpie 池子中用户存入 LPT 代币的存款凭证。

根本原因

这次事件的核心问题在于 Penpie 在注册新的 Pendle 市场时,错误地假设所有由 Pendle Finance 创建的市场都是合法的。实际上,Pendle Finance 的市场创建流程是开放的,任何人都可以创建市场,并且关键参数如 SY 合约地址可以由用户自定义。攻击者利用这一漏洞,创建了一个包含恶意 SY 合约的市场,并通过 Penpie 池子在获取奖励时需要对外部 SY 合约进行调用的机制,使用闪电贷为市场和池子添加大量流动性,从而人为放大奖励数额,实现获利。

攻击步骤分析

攻击前置准备

交易哈希:0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1

1. 攻击者首先通过 PendleYieldContractFactory 合约的 createYieldContract 函数创建 PT 和 YT 收益合约,将 SY 设置为攻击合约地址,并以此调用 PendleMarketFactoryV3 合约的 createNewMarket 函数,创建了对应的市场合约 0x5b6c_PENDLE-LPT。

2. 接着,攻击者使用 PendleMarketRegisterHelper 合约的 registerPenpiePool 函数注册 Penpie 池子,此过程中会创建存款凭证 PRT 代币合约及相关的 rewarder 合约,并在 Penpie 中登记池子信息。

3. 随后,攻击者调用 YT 合约的 mintPY 函数,铸造大量 YT 和 PT,数量取决于攻击合约(SY 合约)返回的汇率。

4. 紧接着,攻击者将 PT 存入市场 0x5b6c_PENDLE-LPT 并铸造 LP 代币。

5. 最后,攻击者将 LP 代币存入 Penpie 池子,换取存款凭证 PRT 代币。

正式攻击

交易哈希:0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5

1. 攻击者先通过闪电贷借出大量 agETH 和 rswETH 代币。

2. 调用 Penpie 池子的 batchHarvestMarketRewards 函数,批量收集指定市场的奖励,此操作触发了市场合约 0x5b6c_PENDLE-LPT 的 redeemRewards 函数。

3. 在 redeemRewards 函数中,外部调用了 SY 合约(攻击合约)的 claimRewards 函数,期间攻击者使用闪电贷资金为奖励代币增加流动性(攻击合约中特意将奖励代币设置为两种市场代币 0x6010_PENDLE-LPT 和 0x038c_PENDLE-LPT),并将获得的市场代币存入 Penpie 池子,从而获得相应的存款凭证代币。

4. 接着,这些新存入 Penpie 池子的市场代币会被当作计算出来的奖励,随后通过 Rewarder 合约的 queueNewRewards 函数将这些代币转移至该合约。由于 0x5b6c_PENDLE-LPT 市场中仅攻击者一人存款,因此可以立即调用 MasterPenpie 合约的 multiclaim 函数,提取 Rewarder 合约中的这部分 LPT 代币。

5. 最后,攻击者通过 PendleMarketDepositHelper 合约的 withdrawMarket 函数燃烧在第三步获取的存款凭证 PRT,赎回市场代币,并将这些市场代币连同上一步中提取的奖励一同移除流动性,最终获取基础资产代币(agETH 和 rswETH),实现获利。

总结

这次安全事件暴露了 Penpie 在市场注册环节存在校验不足的问题,过度依赖 Pendle Finance 的市场创建逻辑,导致攻击者能够通过恶意合约控制奖励分配机制,从而获得超额奖励。慢雾安全团队建议项目方在注册市场时,增加严格的白名单验证机制,确保只有经过验证的市场才能被接受。此外,对于涉及外部合约调用的关键业务逻辑,应当加强审计与安全测试,以避免类似事件再次发生。

热门手游

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc