2022年4月23日,成都链安链必应-区块链安全态势感知平台舆情监测显示,NFT项目方Akutar的AkuAuction合约由于智能合约本身漏洞,导致11539ETH被锁死在合约中。成都链安技术团队第一时间对事件进行了分析,结果如下。#1事件相关信息
4月23日消息,Solidity开发者foobar发推称,11539ETH被永久锁定在AkuDreams合约中,个人用户或开发团队都无法取出资金。退款处理完成后,将每个出价状态设置为1。因此,用户无法调用emergencyWithdraw()。此外,团队也无法领取资金,基本上等于销毁。
Alphapo热钱包被盗,损失金额达2300万美元:金色财经报道,链上侦探ZachXBT表示,加密支付服务提供商Alphapo热钱包中的ETH、TRON和BTC被盗取,损失约合2300多万美元。此后HypeDrop(Alphapo客户)的提款功能被禁用。被盗资金首先被跨链到以太坊上,然后跨链到Avalanche和BTC网络。[2023/7/23 15:53:21]
成都链安技术团队立刻进行了分析。漏洞合约:0xf42c318dbfbaab0eee040279c6a2588fa01a961d#2漏洞分析
Akutar项目的智能合约包含2个漏洞:漏洞一:
1.第一个合约漏洞在processRefunds中,设计者根据refundProgress计数器进行循环退款。2.而这里使用了call函数进行退款操作,且把退款的结果作为require的判定条件。
多家投行下调对比特币矿商Argo Blockchain的股票评级:金色财经报道,多家投行下调对Argo Blockchain的股票评级,其中投资银行Canaccord Genuity将其评级从买入下调至持有,并将该公司美国存托股票 (ARBK) 的目标价从10美元下调至1美元。杰富瑞将Argo评级从买入下调至持有,并将目标价从13美元下调至1.10美元。Canaccord分析师Joseph Vafi在报告中表示,正在将Argo股票评级下调至持有。
Argo Blockchain此前表示,一项出售2700万美元股权以资助运营的交易已经失败,由于没有固定费率的电力协议,该矿商受到比特币价格萎靡和高能源成本的打击,可能很快就会出现负现金流。(CoinDesk)[2022/11/2 12:06:59]
国际清算银行:CBDC测试取得了里程碑式的成功:金色财经报道,国际清算银行周二表示,涉及多个亚洲央行数字货币的项目被认为是成功的,促进了超过2200万美元的外汇交易。国际清算银行在LinkedIn的一篇文章中说,这项被称为有史以来第一次的试验使用了一个定制的分布式账本技术平台,得到了中国、香港、泰国和阿拉伯联合酋长国的中央银行的支持,并于9月23日完成。
去年11月发布的一份声明称,高盛、汇丰、法国兴业银行和中国六大国有贷款机构是参与该项目(称为mBridge)的20家商业银行之一。(coindesk)[2022/9/28 22:35:53]
3.因此如果此时有攻击者在队列中进行退款操作,调用call退款给攻击者时,攻击者在fallback中进行进行恶意的revert则会导致退款队列卡在攻击者这里,从而导致队列后面的所有人都无法进行退款。
荷兰国际银行前瞻美联储利率决议:加息75个基点仍是最佳选择:7月23日消息,利率预期在此前不断波动,但市场目前已几乎确定美联储将加息75个基点,因此前两名鹰派委员称,需要看到更火热的数据才能证明加息75个基点不是合适的选项。汽油价格出现令人鼓舞的下跌趋势,但仍预计9月和11月将加息50个基点,12月将最终加息25个基点。经济衰退的风险仍然存在,美联储可能会在明年夏季降息。(金十)[2022/7/23 2:33:21]
4.这个漏洞被人在链上证明有效,但随后攻击合约便进行了解锁,并没有进行攻击利用,且公开进行了申明。
漏洞二:
该漏洞也是导致价值约3400万美元的ETH资产被锁死在合约中的元凶。1.在claimProjectFunds函数中,该函数主要用于项目方提款。为了避免项目方权限过大,在用户完成提款之前就将合约中的资产全部转走导致用户无法退款,所有的退款操作应全部完成之后项目方才能够提款。业务逻辑设计上来说,是没有问题的。然而,在具体的代码实现中,当前的代码容易受到漏洞一的影响,导致项目方无法提款,不过这只是潜在的风险,本次资金锁死的元凶不是这个原因。2.注意函数中第620行代码:require此处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万美元)被锁定无法提取。#3总结
针对本次事件,成都链安技术团队建议:1.开发者应具备基本的安全开发意识,熟悉智能合约开发应注意的安全问题;2.在合约设计和实现时,注意代码实现的正确性,项目上线前,可选择专业的安全审计公司进行全面的安全审计,规避安全风险。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。