2022年4月23日,成都链安链必应-区块链安全态势感知平台舆情监测显示,NTF项目方Akutar的AkuAuction合约由于智能合约本身漏洞,导致11539ETH(价值约3400万美元)被锁死在合约中。成都链安技术团队第一时间对事件进行了分析,结果如下。
1 事件相关信息
4月23日消息,Solidity开发者foobar发推称,11539ETH(价值3400万美元)被永久锁定在AkuDreams合约中,个人用户或开发团队都无法取出资金。退款处理完成后,将每个出价状态设置为1。因此,用户无法调用emergencyWithdraw()。此外,团队也无法领取资金,基本上等于销毁。?
华纳音乐集团前CEO加入NFT平台OneOf董事会:金色财经报道,华纳音乐集团前首席执行官 Stepher Cooper 加入 NFT 平台 OneOf 董事会。OneOf 的首席执行官兼联合创始人 Lin Dai 表示,Stepher Cooper 将带来有助于建立新合作伙伴关系的专业知识,并帮助将数百万非加密货币原生用户引入 Web3。[2023/2/15 12:09:04]
成都链安技术团队立刻进行了分析。
漏洞合约:
NBA总冠军Metta World Peace等NBA球星在Flow链上发起NFT项目Meta Panda Club:3月22日消息,NBA总冠军、NBA最佳防守球员Metta World Peace(又称慈世平、阿泰斯特)联合其他NBA球星在Flow链上发起NFT项目Meta Panda Club, 旨在打造连接虚拟世界和物理世界的去中心化篮球社区,团结职业球员、篮球队、联盟和球迷。
该项目预计于2022年Q1季度上线创世NFT销售,共投放10000个Meta Panda NFT,结合熊猫与篮球的元素,持有者将享受到由Meta Panda Club带来的更多权益,如:实物商品的空投、游戏的VIP门票、虚拟世界集成,以及与喜爱的球员线下聚会等。
据悉,阿泰斯特还将于3月22日周二晚10点做客福洛链FlowOfficial B站直播间。[2022/3/22 14:11:38]
0xf42c318dbfbaab0eee040279c6a2588fa01a961d
苏富比将拍卖科比投篮球衣及其NFT,接受加密货币支付:2月16日消息,苏富比拍卖行周二宣布将在一场包括体育纪念品NFT的拍卖中接受加密货币支付。拍卖品为已故洛杉矶湖人队篮球运动员科比·布莱恩特的一件投篮球衣,他在2006年对阵多伦多猛龙队的比赛中夺得81分。NBA官方认证机构已经验证了这件球衣的真假,照片也和这件球衣相吻合。科比其他穿过的衣服目前还没有公开拍卖。科比的投篮球衣将以实物形式出售,同时还配有科比81分比赛的NFT动画。这件球衣的起价为20万美元。苏富比将接受ETH、BTC、USDC以及法币的最终支付。(The Block)[2022/2/16 9:55:33]
Akutar项目的智能合约包含2个漏洞:
iBox发行经典国画NFT,上线即售罄:据iBox官方消息,iBox联合搜云科技发行当代十大著名画家作品。此次发行的作品为荣宝斋限量精品书画作品系列,含齐白石、张大千、傅抱石、李可染、潘天寿等当代著名画家经典作品,二期上线傅抱石《待细把江山图画》,上线1分钟即售罄。
iBox是基于微信的数字藏品电商平台,也是国内最大的数字藏品发行平台,已成功发行国内首个明星周边NFT、首个电影NFT、首个教父级音乐NFT,更是连续两期盲盒上线即售罄。平台发行的“徐冰天书号”数字藏品创下了国内单价之最。[2021/8/20 22:27:22]
漏洞一:
1.第一个合约漏洞在processRefunds中,设计者根据refundProgress计数器进行循环退款。
2.而这里使用了call函数进行退款操作,且把退款的结果作为require的判定条件。
3.因此如果此时有攻击者在队列中进行退款操作,调用call退款给攻击者时,攻击者在fallback中进行进行恶意的revert则会导致退款队列卡在攻击者这里,从而导致队列后面的所有人都无法进行退款。
4.这个漏洞被人在链上证明有效,但随后攻击合约便进行了解锁,并没有进行攻击利用,且公开进行了申明。
漏洞二:
该漏洞也是导致价值约3400万美元的ETH资产被锁死在合约中的元凶。
1.在claimProjectFunds函数中,该函数主要用于项目方提款。为了避免项目方权限过大,在用户完成提款之前就将合约中的资产全部转走导致用户无法退款,所有的退款操作应全部完成之后项目方才能够提款。业务逻辑设计上来说,是没有问题的。然而,在具体的代码实现中,当前的代码容易受到漏洞一的影响,导致项目方无法提款,不过这只是潜在的风险,本次资金锁死的元凶不是这个原因。
2.注意函数中第620行代码:require (refundProgress > = totalBids)此处refundProgress表示已经处理了多少个用户的退款,totalBids表示所有用户总投标了多少个NFT。注意由于一个用户可以投标多个NFT,导致单从数值上比较,refundProgress可能小于totalBids。
而再来看看退款函数processRefunds中:require(_refundProgress < _bidIndex); bidIndex表示所有参与竞标的用户,refundProgress永远不会高于bidIndex。
此时来看看bidIndex的值,为3669:
totalBids的值为5495:
3.所以refundProgress>=5495且refundProgress<3669这个判断条件永远不会成立,最终导致项目方团队将永远无法执行后续的提款操作。此处应将refundProgress与bidIndex做对比,开发者犯了一个很低级的错误。最终,导致项目方11539ETH(价值约3400万美元)被锁定无法提取。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。