KingDefi收益计算逻辑漏洞分析_DEF:VES

漏洞原因

近日,据业内人士提供的有关信息,名为KingDefi的项目合约存在漏洞,并提示其他用户谨慎操作,提取资金并取消授权。知道创宇区块链安全实验室调研发现,KingDeFi是一个DeFi项目,主要功能包含对BSC、Solana链上DeFi的收益聚合分析、用户DeFi收益追踪以及项目原生代币的抵押挖矿。

在查看BSC链上的KrownMaster合约源码后发现,该合约确实存在逻辑漏洞,会导致用户收益率受到影响,在相应的计算逻辑存在疏漏,以下为详细解释。合约链上地址如下:https://bscscan.com/address/0x56a65a3736e65349e5b0737cb2c5eb7d5ccbbbe3#code如下图所示,我们注意到在项目用户奖励更新算法逻辑的处理过程中存在对investor数组的一个遍历,此处investor地址存在被重复遍历并且修改对应奖励的可能性。

Kinetix为Unity游戏和虚拟世界推出Emote Infrastructure:金色财经报道,AI初创公司Kinetix宣布公开发布其开创性的Emote Infrastructure。Kinetix增强了视频游戏和虚拟世界中的情感体验。这项技术使游戏开发商和虚拟世界创作者能够使用Unity通过集成与Windows、iOS和Android平台兼容的Emote SDK来增强用户参与度并开辟新的收入来源。此次发布是继Kinetix在2月份发布的最初公告之后。[2023/5/14 15:01:18]

Chainlink上线Chainlink Staking (v0.1) 测试版:金色财经报道,去中心化预言机网络Chainlink宣布推出质押功能,Chainlink Staking (v0.1)测试版已在以太坊主网上线。Staking最初对节点运营商以及有资格获得早期访问权限的社区成员开放,用户最多可以抵押7,000个LINK代币并开始获得奖励,并且有9-12个月的锁定期。质押池将于美国东部时间2022年12月8日中午12点向一般访问者开放。

Chainlink表示,该池的上限为2500万个LINK代币,约占LINK总供应量的2.5%,价值1.775亿美元。Chainlink计划在未来允许对其他服务进行质押,并使用此测试版来测试和改进未来的发布。[2022/12/7 21:26:44]

如下图所示,用户在通过deposit调用进行抵押的时候,判断当用户抵押数量为0时,可作为investor地址加入投资收益列表从而获得抵押收益,而该判断可被黑客利用。

Dfinity基金会对《纽约时报》记者Andrew Ross Sorkin等人提起诽谤诉讼:金色财经报道,6月28日,Dfinity基金会对《纽约时报》记者Andrew Ross Sorkin和Ephrat Livni以及Arkham的创始人兼首席执行官Miguel Morel和其他现任或前Arkham官员、代理人和雇员提起诉讼,起诉他们诽谤和不公平的商业和贸易行为,预计随着情况的发展,诉讼中还将增加更多的被告。

该诉讼称,有人利用了《纽约时报》及其明星商业记者Andrew Ross Sorkin的意愿,后者于2021年6月28日故意发布了一篇关于“热门文章”的虚假和诽谤性报道(Arkham报告),这份报告由试图从该计划中获利的富有精英秘密购买和支付。Arkham报告购买了推广服务,时报发布了该文章,该文章损害了互联网计算机生态系统的运营和声誉。该诉讼还声称,诽谤计划涉及不公平的商业和贸易行为,因为它的动机是希望减少互联网计算机对竞争性区块链(ReserveProtocol)构成的威胁。[2022/6/30 1:42:04]

声音 | TokenGazer:Cosmos Staking使投资策略多样化 代币集中问题凸显:TokenGazer发布Cosmos深度研究报告:Cosmos项目目前主网已经上线,但链间通信协议(IBC)的开发工作还有待完成。该项目社区热度较高,GitHub关注度及生态建设较为完善,跨链技术也受到区块链行业更多的关注和认可。投资者根据自己的投资偏好可自由选择本文提到的投资策略,但就Cosmos项目本身而言,目前节代币持有及节点抵押权重中心化程度较高,有一定的中心化治理风险,投资者需理性看待。[2019/4/3]

如下图所示,黑客可通过调用withdraw或者withdrawAll函数将指定pid池子中的抵押数量提现,从而使得user.amount为0,进而该地址可以在再次deposit抵押的时候通过相应检查进入investor列表,从而在updatePool函数中对黑客investor地址进行重复遍历并且增加多次抵押奖励,使得抵押奖励分配不均,影响到其他用户的抵押挖矿收益。

通过查看项目github发现,KingDefi项目方当前已对该问题进行了修改。漏洞修复

那么项目方如何修复该漏洞?查看项目的github地址(https://github.com/kingdefi/Krown-Contracts/tree/main/Farm),发现其在18个小时前曾更新过代码,对比一下更新代码。

发现项目方已经删除了用于存储用户地址的数组,改为了rewardsPerShare变量,该变量表示单位抵押代币所对应的奖励代币;同时项目方也更改了奖励的计算方式(updatePool函数):由原来循环所有用户地址来按比例分配奖励改为更新rewardsPerShare变量来计算用户奖励代币。

对比两种奖励方式,后者已经不会产生前者因为重复计算奖励的问题,这种奖励方式类似于sushiswap的奖励计算方式,同时也避免了前者因为循环次数太多导致的gas销毁过大的问题。漏洞总结

Kingdefi这次的漏洞影响到的是用户的奖励代币数量,攻击者可不断抵押提取来提高自身奖励的分配数量,但是用户的抵押代币是不受任何影响,可以正确安全提取出来。从项目方的修复结果来看,其换了一种常规奖励计算方式,该方式符合抵押挖矿逻辑,用户可正常且正确提取抵押和奖励代币。在此提醒广大项目方,在上线Defi挖矿项目前一定要做好代码审计,不同的计算方式在吸引新用户的同时也会大大增加犯错的风险!i

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-3:454ms