详细内容
区快洞察消息,针对 DeFi 保险项目 Cover 协议被攻击一事,慢雾安全团队对整个攻击流程进行了简要分析:1. 在 Cover 协议的 Blacksmith 合约中,用户可以通过 deposit 函数抵押 BPT 代币;
2. 攻击者在第一次进行 deposit、withdraw 后将通过 updatePool 函数来更新池子,并使用 accRewardsPerToken 来记录累计奖励;
3. 之后将通过 _claimCoverRewards 函数来分配奖励并使用 rewardWriteoff 参数进行记录;
4. 在攻击者第一次 withdraw 后还留有一小部分的 BPT 进行抵押;
5. 此时攻击者将第二次进行 deposit,并通过 claimRewards 提取奖励;
6. 问题出在 rewardWriteoff 的具体计算,在攻击者第二次进行 deposit、 claimRewards 时取的 Pool 值定义为 memory,此时 memory 中获取的 Pool 是攻击者第一次 withdraw 进行 updatePool 时更新的值;
7. 由于 memory 中获取的 Pool 值是旧的,其对应记录的 accRewardsPerToken 也是旧的会赋值到 miner;
8. 之后再进行新的一次 updatePool 时,由于攻击者在第一次进行 withdraw 后池子中的 lpTotal 已经变小,所以最后获得的 accRewardsPerToken 将变大;
9. 此时攻击者被赋值的 accRewardsPerToken 是旧的是一个较小值,在进行 rewardWriteoff 计算时获得的值也将偏小,但攻击者在进行 claimRewards 时用的却是池子更新后的 accRewardsPerToken 值;
10. 因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;
11. 所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的 COVER 代币,导致 COVER 代币增发。
2. 攻击者在第一次进行 deposit、withdraw 后将通过 updatePool 函数来更新池子,并使用 accRewardsPerToken 来记录累计奖励;
3. 之后将通过 _claimCoverRewards 函数来分配奖励并使用 rewardWriteoff 参数进行记录;
4. 在攻击者第一次 withdraw 后还留有一小部分的 BPT 进行抵押;
5. 此时攻击者将第二次进行 deposit,并通过 claimRewards 提取奖励;
6. 问题出在 rewardWriteoff 的具体计算,在攻击者第二次进行 deposit、 claimRewards 时取的 Pool 值定义为 memory,此时 memory 中获取的 Pool 是攻击者第一次 withdraw 进行 updatePool 时更新的值;
7. 由于 memory 中获取的 Pool 值是旧的,其对应记录的 accRewardsPerToken 也是旧的会赋值到 miner;
8. 之后再进行新的一次 updatePool 时,由于攻击者在第一次进行 withdraw 后池子中的 lpTotal 已经变小,所以最后获得的 accRewardsPerToken 将变大;
9. 此时攻击者被赋值的 accRewardsPerToken 是旧的是一个较小值,在进行 rewardWriteoff 计算时获得的值也将偏小,但攻击者在进行 claimRewards 时用的却是池子更新后的 accRewardsPerToken 值;
10. 因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;
11. 所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的 COVER 代币,导致 COVER 代币增发。
区快洞察消息,以太坊链上期权协议 Primitive 宣布已在主网上部署 v1 版本,即将将接口部署到 IPFS,对 Connector 合约库进行智能合约审计,以及在页面上抽象化 WETH 的使用,方便用户直接使用 ETH。之后,Primitive 将对核心期权智能合约进行几项升级,如使用许可进...
区快洞察消息,零知识证明研发机构 StarkWare 为其图灵完备框架「Cairo」发布 Cairo 工具链的首个版本 v0.0.1,包括编译器、虚拟机、调式器(Tracer)、IDE 扩展等。另外,StarkWare 即将为太坊二层扩容方案 StarkEx 2.0 发布 Cairo 代码。区快洞察此前报道,本月初...
该企业最新头条微商机