漏洞原因
近日,据业内人士提供的有关信息,名为KingDefi的项目合约存在漏洞,并提示其他用户谨慎操作,提取资金并取消授权。知道创宇区块链安全实验室调研发现,KingDeFi是一个DeFi项目,主要功能包含对BSC、Solana链上DeFi的收益聚合分析、用户DeFi收益追踪以及项目原生代币的抵押挖矿。
在查看BSC链上的KrownMaster合约源码后发现,该合约确实存在逻辑漏洞,会导致用户收益率受到影响,在相应的计算逻辑存在疏漏,以下为详细解释。合约链上地址如下:https://bscscan.com/address/0x56a65a3736e65349e5b0737cb2c5eb7d5ccbbbe3#code如下图所示,我们注意到在项目用户奖励更新算法逻辑的处理过程中存在对investor数组的一个遍历,此处investor地址存在被重复遍历并且修改对应奖励的可能性。
声音 | Robert Kirkby:新西兰的加密货币收入征税计划对于Facebook Libra是一大胜利:新西兰税务当局已裁定,加密货币收入是合法的,并就如何准确征税提供了指导。对此,惠灵顿维多利亚大学经济学院讲师Robert Kirkby表示,“请注意,根据这一裁决,比特币仍将作为一种资产征税,与以股票支付一样,所以如果你用比特币支付,实际上没有任何变化。”正如税务当局所描述的,符合该法案的“稳定币”并不多。不过,如果Facebook真的推出拟议中的Libra币,这种情况明年可能会发生变化,因为这种货币与一篮子货币挂钩。(Wired)[2019/8/16]
动态 | Kin基金会发起筹款活动挑战SEC,要求对加密货币进行新的豪伊测试:据ambcrypto消息,摩根溪数字资本联合创始人Anthony Pompliano最近宣布,因为美国证券交易委员(SEC)会对加密领域采取的限制措施开启了危险的先例,扼杀了创新。Kin基金会正在发起一场运动,要求对加密货币进行新的豪伊测试(Howey Test),以便对加密领域进行更好的监管。基金会目前已与Coinbase为运动预留了500万美元,以便在法律上采取措施,同时呼吁其他人为基金捐款,活动目前已筹集了25.95万美元。[2019/5/28]
如下图所示,用户在通过deposit调用进行抵押的时候,判断当用户抵押数量为0时,可作为investor地址加入投资收益列表从而获得抵押收益,而该判断可被黑客利用。
声音 | George Kikvadze:别把比特币和郁金香相比:比特币矿业巨头Bitfury副董事长George Kikvadze24日发推特表示,未受教育的人把比特币称为“泡沫”,并把它比作郁金香和南海,但他们没有意识到后者崩溃了,再也没有回来过。而比特币每次经过几次调整后,都会咆哮(大涨)着回来。我们发现了一件大事,伙计们,不要让“专家”把你弄糊涂。[2018/11/24]
Sunny King重返江湖 宣布全新项目VEE:数字货币圈神秘人物、天才程序员Sunny King日前宣布由其担任总设计师的全新项目 VEE正在研发,官网称其为“第五代比特币”据业内人士称,团队目前正在韩国、日本、新加坡、香港、瑞士、伦敦举办技术 路演。作为两个数字货币点点币(PeerCoin)和质数币(PrimeCoin)的创始人,Sunny King 表示,他仍在持续关注其动态。[2018/1/25]
如下图所示,黑客可通过调用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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。