智能合约高危漏洞频出,五种常见漏洞你必须知道

区块链资讯CertiK2019-11-02 12:16:03  阅读 -评论 0

区块链行业内,一个普遍达成的共识是智能合约的“智能”性取决于其可自执行的书面代码编写的程序。那么还有一个问题:智能合约到底能有多智能呢?
智能合约与其他软件程序一样,程序的智能性取决于源代码的质量。在对诸多项目进行了智能合约审计之后,CertiK汇编了一些常见的漏洞,这些漏洞对于智能合约甚至可以称得上致命的。本文可以作为参考,帮助规避合约中出现类似问题。
漏洞实例
1. 矿工恶意利用漏洞
矿工可恶意利用存在于智能合约执行之外的变量,并从中获益。
交易时间戳(当一个新的区块被“挖掘”出来时,本地必会生成一个对应的时间戳)
从以往产生的问题来看,交易时间戳在一定程度可以被矿工人为改变。由于区块链网络中并不存在一个所有节点都必须遵守的中央时间,因此每当一个新的区块产生,本地生成的时间戳上通常会有一个可接受范围内的时间偏差值。这种细微到不会引起任何关注的偏差给了矿工利用的机会。
使用block.number计时的风险警告
其实block.number函数本身并不是一个能够被轻易利用的漏洞,但因为每挖掘一个区块所花费的时间是不定的,因此block.number函数作为一个变量有时候并不足够可靠。
例如,智能合约的规则其中有一条是在365天内将资产从用户A转移到用户B。矿工挖掘一个块的平均时间需要保持在10分钟左右,资产才可以按时完成转移。当每个用户都可以尝试用block.number创建规则来转移资产时,block.Number的变量便会达到52,560(365天x24小时/天x60分钟/天/10分钟挖掘/区块)。

但是,如果由于某种原因(例如:节点脱离了网络)而导致挖块平均时间发生变化,那么资产转移的时间便会提早或推迟。

智能合约高危漏洞频出,五种常见漏洞你必须知道

那么如何确定是否使用block.number函数呢?它在一定程度上是一个灵活的解决方案或可以作为交易时间戳应用的替代方法。应用时需要考虑智能合约的具体案例,如果合约并不考虑时间敏感性,或者所需的合约期限相对较短,那么block.number就是最佳的交易时间戳替代方法;假如合约需要在一个特定时间内执行,或如果合约期限需要维持一个相当长的时间时,那么由于block.number的准确性不足,用户必须重新寻找解决方案。
交易顺序依赖/非法预先交易依赖
当代码依赖于交易顺序时,合约中会出现竞态条件方面的漏洞:在区块内部,交易本身的顺序很容易受到人为操控。
用户的交易顺序在执行和添加到块之前就已经公开了,这会导致一些分散的市场过于透明。设想一下,如果这种类型的漏洞出现股票市场中,那场景会有多可怕,投资者买卖股票的信息对于其他投资者来说称得上是一览无余!
根据供应链协议,这种超透明的交易顺序会导致市场环境陷入不平衡、不公平的境地。例如,在以太坊上,矿工即可通过支付更多gas来获得优先处理其交易的权利,这就为更多的恶意行为者提供了机会。
当智能合约依赖于交易顺序时,用户必须确保其合约是绝对安全的,以避免被他人恶意利用。
2. 整数的溢出下溢
计算机中整数都有一个宽度,因此它有一个可以表示的最大值。当保存一个超过最大值的数时,就会发生整数溢出;相反,当保存一个小于最小值的数时,就会发生下溢。
举一个典型的整数溢出例子:汽车的里程表无法记录超过999999(6位数值)的里程。当汽车行驶里程超过六位数时,汽车里程表只能将这个七位数值(1,000,000)用最后六位数000000表示。
数据必须保证准确性是毋庸置疑的。如果不去解决溢出和下溢的情况,会造成数据的不准确和智能合约的输出错误。然而当成千上万行的代码需要由人工来检查时,这些问题非常容易被忽略。此时使用形式化验证可以有效避免代码受到数据溢出和下溢的影响。
3. 访问和权限控制漏洞
公共区块链中,任何人都可以在链中读写区块的性质决定了访问和权限控制并不是什么重要的设置。但随着区块链技术的发展,网络安全的形势越来越严峻,私有链如今需要深入思考如何建立更为安全的访问机制。
如果一个公共区块链没有任何访问限制,必会给利益相关者带来一些损失。所以如果你要控制进入网络的节点或限制存放敏感信息的区块,你必须留意所设置的访问权限。
4. DDoS(分布式拒绝服务)攻击
区块链虽然可以减少部分传统DDoS攻击,但此攻击仍难以避免。如果链协议没有内置保护措施,区块链节点很容易被恶意编码的智能合约以DDoS的方式进行攻击。这将导致网络中的所有资源都用以处理这些问题,最终导致网络崩溃。
虽然目前还没出现针对区块链网络的重大DDoS攻击,但TRON在上半年已经发现了一个相关漏洞,这个漏洞可将整个区块链网络置于危险境地。
5.可重入性攻击
以智能合约为中介进行的攻击并不总是来自于外部。恶意合约可以在第一个函数完成前回调到调用合约之中。
换言之,恶意合约可以被编码到一个受到攻击的智能合约中。所以当受攻击的合约执行第一次操作时,恶意合约便可以中断此次操作,然后再通过回退功能运行另一个新的功能。一般来说,这种操作是可重入的,因为它在初始调用完成之前就进入了另一个合约的调用操作之中。
这种漏洞允许恶意用户或恶意的合约发布者改变受攻击智能合约的本质,并利用系统对其进行内部攻击。一个比较出名的例子是the DAO,它直接导致了以太坊和以太坊经典链条之间出现硬分叉。    

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

解析| 当传销币穿上了区块链的外衣,你怎么才能不上当?

区块链这个概念,可谓是近几年来当之无愧的“热搜王”。单是蹭着区块链的热度进行名气炒作倒还勉强可以接受,可更过分的是,还有图谋不轨者,直接套用区块链的外壳玩出了一个个计谋复杂的骗局。他们把“炒股”“炒金”“炒期货”,甚至是最原始的传销套路打造成了最前沿的概念,想尽一切办法让这些产物和时下最夯的区块链产生联系。打着“区块链”旗号进行招摇撞骗的骗子们最先做的一件事,自然是鼓吹概念。

由《网络安全威胁信息发布管理办法》引发的对区块链安全的思考

区块链领先安全公司CertiK认为,此次国家互联网信息办公室拟出台的《网络安全威胁信息发布管理办法》,对于网络安全进行了规范,有效地降低了互联网领域的安全隐患,同样保护了区块链行业内相对级别较低的企业和个人,加强了现有的安全解决方案,为构建区块链生态系统提供了相当大的助力。

区块链经济学:网格化的协作

现在我们大谈区块链,不如说是由于信息成本的降低,技术的普及,导致了一种新型的社会运动的产生,协作运动。区块链技术引起的变革和他的治理机制是很难分开的,比如说未来一定是一个通证经济时代。所以你不能说只谈区块链,不谈这个通证经济学,这俩是分不开的,那区块链本身引起的就是一场价值互联网革命。谈到区块链在制度创新方面的影响,那是非常深远的。

德国证交所、瑞士电信与Corda及Hyperledger就证券结算合作

为了处理现金和证券代币,参与者正在部署两种不同的DLT技术协议—R3的Corda和IBM的Hyperledger Fabric—来完成跨链安全结算。德国证交所和瑞士电信的新举措是两家公司现有的与区块链相关的合作中的又一个里程碑。今年早些时候,德国证交所集团和瑞士电信与总部位于新加坡的金融科技公司Sygnum合作,开发了针对数字资产的合规金融市场基础设施。

俄罗斯联邦储蓄银行申请基于区块链的回购协议解决方案专利

根据俄罗斯联邦储蓄银行在11月19日发布的公告,该银行已获得该解决方案的专利,该解决方案使用智能合约技术自动实现双方间的回购交易。降低交易对手风险 根据俄罗斯联邦储蓄银行的公告,该银行是俄罗斯第一家通过基于区块链的执行系统获得回购交易解决方案专利的公司。俄罗斯联邦储蓄银行的解决方案包括一种机制,可以在回购期限(或期限)的整个过程中监控相关抵押证券的市场价格。

中信银行打造“区块链”信用证结算!

中信银行打造“区块链”信用证结算!

科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

中国信息技术部门成立区块链研究实验室

中国信息技术部门成立区块链研究实验室

暴走时评:本月初,中国政府对国内的ICO和数字货币交易所的打击在世界范围内引起了强大反响,但政府已经多次声明不会将区块链与数字货币划等号,依然非常重视区块链技术在中国的发展。鉴于中国工业和信息化部成立了一个专门研究区块链的实验室,这一论调也得到了进一步的证实。 虽然中国政府最近在大力打击比特币交易所和ICO,但仍然致力于开发区块链在其他领域的潜力。 据财新网报道,中国工业和信息化部已经成立了一

 分布式账本中的生命科学

分布式账本中的生命科学

生物科学是医学领域涉及遗传研究,疾病预防和生活方式治疗(lifestyle treatments)的学科。它已经存在了很长时间,但区块链技术的基础设施应用给该学科提供了重大进步的可能性。 根据Pistoia Alliance进行的2016年6月份高级制药和生命科学领袖调查,83%的受访者表示,他们预计在五年内将全面采用区块链技术。 Pistoia Alliance是一个全球性的非营利组织,致

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑