美文网首页
一文读懂智能合约漏洞

一文读懂智能合约漏洞

作者: Dipperin | 来源:发表于2019-06-18 17:58 被阅读0次

智能合约是区块链的核心技术之一,是多方参与场景中的共识规则,更是智能合约是价值传递的中枢。之所以区块链出现以后安全问题变得前所未有的重要,是因为智能合约实现的是一种价值传递,区块链上的每一个数字都是价值,每个漏洞导致的数字变化,其背后就是巨额的价值损失。

2016年6月The DAO安全漏洞,导致5000万美元的损失 2017年7月Parity多签名钱包两次安全漏洞,分别导致3000万美元、1.52亿美元的损失。 2018年4月BEC代币被盗事件,由于一行代码的安全漏洞引发其9亿美元市值几乎归零。

1、美链BEC合约漏洞

BEC漏洞实质上是一个算法上下溢出漏洞。该漏洞的原理在于,当合约提供提款或是转账功能时,一般会对地址的余额做操作,如果余额操作没用SafeMath则攻击者可以经过巧妙设计将转账的扣款金额弄成0,而转出金额弄成很大的数值,导致合约凭空产生很多token或用户凭空从合约中提出很多余额。

由此可见不止合约中的计算,程序中的所有计算都需要关心上下溢出问题,如果发生溢出漏洞则会产生很大的损失。

2、假充值漏洞

在用户进行转账时,一些合约的transfer函数对转账发起人(msg.sender)的余额检查用的是if判断方式,而这种温和的判断方式在transfer这类敏感函数场景中并非一种严谨的编码方式,而这种不严谨的编码方式是一种安全缺陷,这种安全缺陷可能会导致特殊场景下的安全问题。攻击者可以利用存在该缺陷的合约向中心化交易所、钱包等服务平台发起充值操作,若交易所仅判断如TxReceiptStatus是success,则就有可能以为充值成功,产生“假充值”“假交易”。

这种问题在于交易所的代码判断需要更加严谨,不止是要判断状态是否正确,还要判断这笔转账确实是到账了的。当然合约代码在这种问题的判断中也需要尽量避免使用if这种温和的判断方式,而应该直接用assert、require这种语句让条件不成立的情况下结果状态不为Success。

3、TheDAO事件

TheDAO事件本质上是由重入漏洞引起的。重入攻击流程如下:

1. 一个聪明的合同跟踪一些外部地址的平衡,并允许用户通过其公共资金检索withdraw(  )功能。

2. 一个恶意的智能合同使用withdraw(  )函数检索其全部余额。

3. 在更新恶意合同的余额之前,受害者合同执行call.value(amount)(  )低级别函数将以太网发送给恶意合同。

4. 该恶意合同有一个支付fallback(  )接受资金的功能,然后回调到受害者合同的withdraw(  )功能。

5. 第二次执行会触发资金转移:请记住,恶意合同的余额尚未从首次提款中更新。结果,恶意合同第二次成功退出了全部余额。

其中关键点在于,用户提款时,TheDAO调用了call.value(amount)(  )方法将金额发给调用者,问题就在于:如果调用者是个合约地址,该方法就会触发合约的一个回调函数,如果这个调用者合约是个坏合约,它就可以再次触发提款调用,以此递归导致大量金额从合约中提走。详解如下图

因此将call.value(amount)(  )改成sender.send(amount),就能避免该重入攻击,但对于DAO事件已于事无补了,因此代码安全审计非常重要。

相关文章

  • 一文读懂智能合约漏洞

    智能合约是区块链的核心技术之一,是多方参与场景中的共识规则,更是智能合约是价值传递的中枢。之所以区块链出现以后安全...

  • 阅读etherscan上所有的合约转账代码

    自从出了智能合约溢出攻击事件之后,大家纷纷讨论发现了智能合约漏洞了之后怎么自由之类的,整天意淫着能找到一个合约漏洞...

  • 安全事件

    最近,智能合约漏洞很火。 让我们再来看一下4月22日BeautyChain(BEC)的智能合约中一个毁灭性的漏洞。...

  • 一文带你读懂智能合约

    前言 区块链1.0是以比特币为代表,解决了货币和支付手段的去中心化问题,区块链2.0最显著的特征就是以太坊的智能合...

  • 本次FTN暂停交易事件回顾

    1.本次FTN暂停交易的原因 FTN的智能合约代码存在安全漏洞。FTN智能合约中的 batchTransfer 批...

  • 开发以太坊智能合约要注意的几个坑

    以太坊智能合约安全漏洞频繁出现,一些通用的合约,比如 token 合约,一般都会以 OpenZeppelin 为基...

  • 区块链智能合约安全之一(盗币攻击)

    下一篇:区块链智能合约安全之二(重入漏洞)transferFrom权限控制不当导致的任意盗币攻击智能合约里的tra...

  • 分析智能合约漏洞

    前几天又爆出新合约漏洞,可以查看着篇文章观看详细内容: https://mp.weixin.qq.com/s/MN...

  • 智能合约重入漏洞

    写好智能合约还真挺难的。 各种问题 这有什么新鲜的,编程本非易事。 首先,社会上引领技术潮流的,反倒是社媒上一撮精...

  • 智能合约漏洞分析

    最近一段时间,关于智能合约漏洞的问题层出不穷。我将以SMT为蓝本进行复盘,通过复盘去深层次了解和防止类似事件发生。...

网友评论

      本文标题:一文读懂智能合约漏洞

      本文链接:https://www.haomeiwen.com/subject/glrqqctx.html