区块链:CertiK:Based智能合约出现漏洞,重新部署其一号池事件分析

“亡羊补牢,为时未晚”,这句话在生活中的大部分时候均适用。然而,在面临网络安全时,牢破也许就会造成无法挽回的损失。在安全问题未造成不可弥补的损失前就被发现,或是一开始便做好万全准备,才是身为区块链从业者的安全第一要义。北京时间8月14日下午,CertiK安全技术团队发现DeFi匿名耕种项目Based官方宣布有攻击者通过调用Based智能合约中的某一个函数,将一号池冻结,同时宣布将重新部署其一号池。官方发布推特称,有黑客试图将“Pool1”永久冻结,但尝试失败。而“Pool1”将继续按计划进行。CertiK通过分析该智能合约,认为这次冻结Based项目一号池事件,是一次由于存在智能合约漏洞导致的事故。

币安或再遭攻击 合约页面大范围卡顿:据社区反馈,币安目前或遭受攻击,有社群客服建议用户使用梯子访问Binance或APP,合约页面暂时卡顿,若进平台需使用备用站点。[2020/4/29]

事件经过

Based团队部署一号池智能合约,部署地址为0x77caF750cC58C148D47fD52DdDe43575AA179d1f。Based官方通过调用智能合约中的renounceOwnership函数来声明智能合约所有者,但未进行智能合约初始化。由于在Based智能合约中initialize函数被错误的设置为可以被外部调用,因此造成在初始化智能合约过程中,一号池的智能合约被外部攻击者用错误的值初始化。错误的初始化造成Based官方无法再次初始化一号池的智能合约,因此造成一号池被冻结,任何质押行为都无法完成。Based官方决定放弃该智能合约,重新部署一号池智能合约。智能合约技术细节

动态 | Bakkt比特币期货合约或再遭推迟 CFTC尚未公布其豁免请求提案:据CoinDesk消息,Bakkt推出比特币期货交易的计划一再被搁置,它已经向美国商品期货交易委员会(CFTC)提交提案要求获得豁免,允许其托管用于结算期货合约的比特币,CFTC委员在2018年12月收到该提案。但随着2019年第一季度接近尾声,CFTC尚未公布Bakkt提出的豁免请求,以征询公众意见。这意味着,即使CFTC马上公布该提案,最早也要到4月中旬才能推出,因为委员们必须提供为期30天的公众评议期,然后再花几天时间查看评论,之后再投票决定是否批准该计划。据悉,洲际交易所(ICE)最初计划在2018年12月中旬推出Bakkt,之后一再推迟时间。根据媒体Abacus Journal 2月份的报道,知情人士透露,ICE旗下数字资产平台Bakkt可能将在3月获得比特币期货上市的申请批准,在获批后几天内,将推出这一产品。[2019/3/18]

1.Based团队在部署智能合约后,没有及时的调用下图的initialize函数来初始化智能合约的设置:

金色晨讯 | SEC就ICO发布公告:可以作为证券发行 澳本聪给出自证中本聪身份证据再遭网友质疑:1.SEC就ICO发布公告:可以作为证券发行。

2.委瑞内拉加密货币新规:国家监管局将负责加密资产的征税事项。

3.莫斯科市政府政府拟推出一个基于区块链技术的城市创新平台。

4.Blockforce Capital与纽约证券交易所Arca向SEC提交新的ETF申请。

5.IBM将利用区块链等技术帮助利福尼亚州抵御干旱灾害。

6.五部委发布《意见》:积极运用大数据和区块链等技术。

7.澳本聪给出自证中本聪身份证据遭网友质疑。

8.日本首相安倍晋三:区块链有很大发展潜力。

9.通用汽车金融子公司利用区块链技术防欺诈。[2019/2/12]

动态 | BitMEX再遭技术问题:据ambcrypto报道,根据推特上的官方声明,BitMEX遭遇了另一次技术失败,这是在用户报告了过去2天的问题之后发生的。该交易所发布了他们面临问题的详细信息,并说明:“我们经历了WebSocket问题,我们已经解决了这个问题并在继续监督。请注意,断开连接的WebSocket可能会显示零帐户余额,我们希望用户在WebSocket重新连接时保持耐心。”此外,推特上的网友还提到了许多其他问题,例如订单无法显示,通过图表上空蜡烛图观察到流动性降低,以及无法保持实时数据源。[2018/10/8]

2.外部调用者利用Based团队在部署和初始化智能合约之间的时间差,乘机调用了下图中671行被错误设置调用范围的initialize函数,抢先初始化了一号池的智能合约:

3.上图两个initialize函数都是由initializer的修饰符修饰。根据其中代码,如果调用了其中一个initialize函数,另外一个initialize函数就无法被调用。initializer修饰符代码如下图所示,这造成了Based官方失去了初始化函数的机会:

4.综上因素,Based智能合约无法被官方正确初始化,因此任何质押行为都无法进行。质押失败的交易记录:

如何避免事件发生

该次事件本质上是由智能合约漏洞导致的,但如果Based团队提早注意到这个漏洞,提前初始化智能合约,可以完全规避这次危险,避免一号池被冻结。因此,CertiK安全技术团队提出如下建议:部署智能合约时应准备好初始化智能合约所需要的命令脚本等工具,及时初始化智能合约,避免攻击者利用部署操作和初始化操作之间的时间差抢先初始化或者操纵智能合约。了解智能合约的运行原理和技术细节,不要盲目的采用其他的智能合约代码。邀请专业的安全团队对其智能合约进行审计,保证智能合约的安全性和可靠性。我们绝不仅仅是寻找漏洞,而是要消除哪怕只有0.00000000001%被攻击的可能性。

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

链链资讯

[0:5ms0-6:642ms