知世金融网专注于股票行情,期货开户,外汇储备等最新相关资讯信息提供投资者参考学习!

当前位置:网站首页 > 区块链 > 正文

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

原创
文章作者
知世-金融领域资深作者
知名金融领域作者,从事金融超过十余年,在行业内有一定影响力。
金融风险管理师认证证书 常识职业资格认证 特许金融分析师 国际金融理财师认证证书
发布时间:2020-02-17 08:24:03 发布来源:CertiK 文章点击:115

在区块链行业内,一个普遍达成的共识是智能合约的“智能”性取决于其可自执行的书面代码编写的程序。那么还有一个问题:智能合约到底能有多智能呢? 智能合约与其他软件程序一...

目录

    本文标题智能合约高危漏洞频出,五种常见漏洞你必须知道,作者:知世,本文有1362个文字,大小约为6KB,预计阅读时间4分钟,请您欣赏。知世金融网众多优秀文章,如果想要浏览更多相关文章,请使用网站导航的搜索进行搜索。本站虽然不乏优秀之作,但仅作为投资者学习参考。

    在区块链行业内,一个普遍达成的共识是智能合约的“智能”性取决于其可自执行的书面代码编写的程序。那么还有一个问题:智能合约到底能有多智能呢?

    智能合约与其他软件程序一样,程序的智能性取决于源代码的质量。在对诸多项目进行了智能合约审计之后,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,它直接导致了以太坊和以太坊经典链条之间出现硬分叉。

    本文相关推荐: 【区块链百科】P2P 网络安全漏洞

    以上便是知世金融网给大家分享的关于智能合约高危漏洞频出,五种常见漏洞你必须知道/qkl/29473.html的相关信息了,希望能帮助到大家,更多金融相关信息,敬请关注知世金融网!

    网站内容均来自互联网,如侵害您的利益联系客服进行删除!

    关键词:漏洞
    (0)
    (0)

    上一篇:dApp(去中心化应用)往何处去?

    下一篇:biteb:区块链技术首个成功应用

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

    本文地址:/index.php?s=article&c=search&keyword=%E6%BC%8F%E6%B4%9E

    金融知名领域

    南方财富网 | 金融界 | 金融界 |

    更多推荐

    • 茅台吃饱,经销商哭倒
      茅台吃饱,经销商哭倒
    • 汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
      汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
    • 158亿元!比亚迪收购!
      158亿元!比亚迪收购!
    • 9月价格回落近五成 “冷静期”酒店业备战“十一”市场
      9月价格回落近五成 “冷静期”酒店业备战“十一”市场
    • 2023哈马博览会哈尔滨银行展区精彩纷呈
      2023哈马博览会哈尔滨银行展区精彩纷呈
    • 大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
      大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
    • A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
      A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
    • 最新!巨头出手,加仓宁王51%
      最新!巨头出手,加仓宁王51%
    • 600亿巨头暴雷
      600亿巨头暴雷
    • 一天32家!科创板回购潮涌来
      一天32家!科创板回购潮涌来
    • 提振信心实招来了!30余家上市公司密集出手 最高要买10亿
      提振信心实招来了!30余家上市公司密集出手 最高要买10亿
    • 高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成
      高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成

    新闻资讯栏目

    站长QQ: 2397470084