KingDefi收益计算逻辑漏洞分析_KIN:DEF

漏洞原因

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

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

链游 DeFi Kingdoms 宣布推出其子网络 DeFi Kingdoms 链:3月9日消息,链游 DeFi Kingdoms 宣布推出与 Ava Labs 联合研发的子网络 DeFi Kingdoms 区块链(DFK Chain)。同时,官方表明JEWEL将被赋予权力,除作为Serendale Governance代币外,还被用于支付DFK Chain的网络gas费。

此外,DeFi Kingdoms 与 Avalanche 基金会合作,将通过新一轮1500万美元的 Avalanche Multiverse 激励措施,促进 Crystalvale 在 DFK 链上启动的早期阶段。[2022/3/9 13:46:12]

声音 | Beth Kindig:最好的区块链应用程序不会与面部识别、社交媒体数据等数据相关联:InterTrust产品宣传负责人Beth Kindig称,本地移动应用程序泄露数据的问题很普遍。整个应用生态系统都需要彻底改革。分布式应用程序是朝着正确的方向前进;然而如果有一方控制着交易或数据,那么许多不会真正去中心化。去中心化的目的是将交易和数据分发到没有中央方拥有的地方。因此,在某些情况下,分布式应用程序将是错误的称谓,因为应用程序开发者或发布者可能会保持控制。Facebook的Libra是在去中心化的情况下称谓不恰当。在这种情况下,加密支付将通过Facebook集中,并且易于跟踪。在许多方面,这将与加密货币的意识形态背道而驰,因为一个人进行的每一笔交易都将被跟踪,因为协议和代币的开发者将识别此人。风险在于,如果其他应用程序开发人员采用类似的模式,即使用区块链记录每一笔交易,同时也通过各种方式验证身份。面部识别是永久性的,你可以改变社保号码、电话号码,甚至名字,但不能改变脸。将其与区块链交易结合起来,可以很容易地想象到反乌托邦级别的监视。最好的区块链应用程序将真正去中心化,不会与面部识别、社交媒体数据、银行数据(如摩根大通币)等数据相关联。[2019/8/19]

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

动态 | Kinesis Money启动借记卡项目,以支持其锚定贵金属的稳定币计划:6月4日,货币系统提供商Kinesis Money宣布启动与Contis Group合作的英国和欧盟借记卡项目。Contis Group是一家平台即服务公司(PAAS),提供端到端的银行和支付解决方案。Kinesis已选择Contis作为其欧洲和英国借记卡解决方案的供应商,并已正式启动开发,计划于第4季度发布。届时,Kinesis借记卡将被集成到Kinesis货币系统中,该系统计划于2019年第三季度推出,以为其基于区块链的锚定黄金和白银的货币提供无缝消费和管理。(EWN)[2019/6/7]

动态 | Kik对抗SEC或将促使监管机构对通过代币销售发行的加密货币分类进行明确裁决:虽然很难对加密货币Kin的创造者Kik和SEC之间将发生的事情做出决定性预测,Kobre&Kim律师Benjamin J. Sauter表示,不管输赢,Kik在公开对抗SEC方面迈出重要的一步:针对主管部门花很长时间才达成执法决定,以及SEC缺乏透明度而对美国加密行业造成损害,Kik表达了不满。这可能会促使监管机构最终就如何对通过代币销售发行的加密货币进行分类做出一些明确裁决。如果该公司确实贯彻其倡议并起诉SEC,那么无论结果如何,美国法院很可能会做出这样的裁决。(Cointelegraph)[2019/6/2]

如下图所示,黑客可通过调用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-1:965ms