PeckShield CEO 蒋旭宪:智能合约安全问题不可怕,预防和响应机制才是关键

在2018以太坊技术及应用大会上,PeckShield创始人兼CEO蒋旭宪在上午的会议中发表了题为《Code Is Law:以太坊智能合约面临的威胁与挑战》的演讲。

蒋旭宪简介: 蒋旭宪,PeckShield创始人兼CEO, 前360首席科学家和美国北卡州立大学终身教授。致力于改善区块链生态安全,隐私和可用性。公司最近接连发现并命名了BEC、SMT、和EDU等智能合约上的重大安全漏洞。

以下为蒋旭宪演讲实录:

感谢主办方,让我荣幸参加本次社区活动,有机会与大家分享以太坊智能合约面临的威胁和挑战,这也是我们团队最近在做的。

我将从以下几部分来作简单介绍:

第一部分,介绍以太坊当前生态现状;

第二部分,讨论制能合约的安全问题;

第三部分,下一步思考。

视频内容

蒋旭宪在2018以太坊技术及应用大会上的现场演讲视频

一、以太坊生态现状

上周引用网站做的一个分析报告:2017年上线了1000多个去中心化的应用,同时超过700个在各个不同交易所可以交易代币。

这个生态确实很有吸引力,平均每天有10万的新用户加入以太坊生态圈,加入的用户也非常活跃,平均每天在以太坊上的日均交易超过100万次,这是非常惊人的数据,同时也说明社区非常有活力。这么有活力的社区也解释了为什么数字加密货币的市场现在如此火爆。

这里引用国外自媒体网站CoinMarketCap的数据,它统计了1640个虚拟货币,市场规模超过了市值3300亿美元。如果与国民生产总值作比较,当前市场规模已经在全球排名第28位。这个市场规模很大一部分原因得益于以太坊部署。

二、智能合约的安全问题

每个发行的币都会在以太坊上部署一个智能合约 ,智能合约掌控着代币的发行、相互之间的转换。

这里我列出2015年8月份到最近一个月的数据,这个数据表明每个月新部署的智能合约数据,大家可以看看以太坊的火爆时间段是否与这个数据吻合?

蒋涛分享到它最火爆的时候,同时也是中国开发者加入的时候,是在2017年的下半年,跟这里智能合约部署的趋势是吻合的。智能合约部署是2017年5月份开始获得了长足增长,在2017年9月份开始下滑,但2017年10月份数据又得到长足增长,然后慢慢稳定下来,到2018年的4月份数据慢慢降落了。

大家能够猜到2017年9月份发生了什么事件。这说明国家政策的监管对于以太坊的智能合约部署或代币发行所起到的作用是相当大的。

而且,这个发展的背后还伴随着我们所不想看到的安全事件。

这些安全事件在区块链的各个环节,包括:交易所、矿池、钱包、智能合约 。

关于交易所,今年3月份交易所被攻击的事件;

关于矿池,在上个月遭到了51%算力的攻击,发生了“双花现象”;

关于钱包,2018年4月份全球最大的基于网页的数字钱包域名被劫持;

关于智能合约 ,以太坊最明显的攻击,2018年4月份有关于美链等智能合约的漏洞,5月份有关于EDU等智能合约的漏洞 。

已公开的漏洞直接影响各大交易所,包括停止代币的发行、充值或提现。目前还有不少未公开的漏洞 ,我们会联系相关的项目方和相关交易所,逐步跟他们验证相关的数据。

因为这是开发者社区,接下来我们会挑两个例子,跟大家分享一下漏洞的原理。希望大家以后在做项目开发时,就能够避免出现相关的问题:

第一个漏洞 ,是关于transferFlaw,也就是大家所理解的偷币漏洞 。如果用户持有一个代币,而它背后对应的智能合约出现这样安全漏洞,攻击者就可以把这些代币从你的钱包里全部转走。

这里列出了一个有漏洞的transferFlaw,其中有三个参数,这是交易的数值,代码49-51行是做初步的检查,以确保这个参数是有效的;53行和54行计算了转出方本身所有的余额,并保存在fromBalance,同时统计了这次允许转出的额度;根据计算出来的变量,在56行和57行,跟当前交易的数值做比较,然后计算两个条件判断:本次交易转出方是否有足够的帐户余额允许做交易,转出方是否有足够的授权来做交易。大家需要关注一下第58行代码,只是简单验证一下:如果把这部分钱或者代币转入转入方,转入方的余额会不会造成溢出。这三个条件加起来就是代码行满足条件下授权这次交易。

大家能够意识到代码行里的判断条件,特别是在56行,如果判断交易的转出方有足够余额,后面的fromBalance不是小于等于value,应该是大于等于value;57行应该是也大于等于value;58行不应该是大于,而应该是小于。

我放一个简单的视频,这里有两个数字钱包:左边数字钱包是一个普通用户的,他有1.2345个UET代币,是我们自己花钱去买的;右边的数字钱包是攻击者的,攻击者开始的代币余额是零。攻击发生的时候,这些UET代币为什么就从用户的数字钱包转到了攻击者钱包的?因为这个漏洞的存在,即使这个用户用的是冷钱包,这些钱也都可以被转走。大家关注一下这个余额的情况,从用户手上转到了攻击者手上。

第二个漏洞是multiOverflow。前面那笔是普通的交易,从转出方转入转入方。但交易一次一次去做的话,可能会引起比较高的交易费用,transferMulti函数的作用就是把多笔的单笔交易组成一个批处理。

它有两个参数,就是转入方和转入的数值。

这里面拥有多笔交易,它做成数组,代码行247和248数值长度是一样的,这是有效的数据,数值长度就变成当前有多少个单笔交易。

代码行249-251相当于把这些要转出的交易的数值做了一个加法,获取总值之后判断转出方是否有足够的余额去授权管理。但因为这个漏洞存在,能够感觉到这个变量有可能溢出,有可能变成零。

假设这个数值有两个地址,一个1、一个2,数值等于2的255次方,2个255次方相加得到256次方,造成的条件相当于转出方的余额大于等于1;后面的循环会把单笔交易的value转到转入方,同时转出方做相减,转出方加这个值等于2的255次方,形成无限生成代币漏洞 。

我们发现有几家正在做的项目已经受到影响,我们第一时间跟他们同步,他们马上更换了智能合约 ,把漏洞做了修改,重新部署上线。

这是转帐的视频,两个手机和钱包都是攻击者的,开始的余额全是零。大家看看余额的变化情况,这么大的数值相当于2的255次方。

看到这个漏洞大家不要觉得很恐慌,最主要的是要开始思考在资产上线可能面临的安全风险。

三、下一步思考:保护措施和防范机制

在资产上线时,一定要考虑到保护措施和防范机制:

第一,上线前一定要对智能合约做相对完整和客观的审计。

第二,上线后一定要注意应急响应。

比如监控你们的智能合约有没有可能有异常交易情况,把这个放到应急响应去,第一时间就知道这个智能合约是否被攻击了。同时,开发业务项目方里有应急响应团队,可以及时做出反应。

第三,希望项目方和交易所有相应的漏洞奖励计划,形成一个健康的生态。

以上便是我对以太坊以及智能合约的一些认识。

原文发布于微信公众号 - 区块链大本营(blockchain_camp)

原文发表时间:2018-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构师进阶

一个程序员眼中的区块链技术

我为什么要写这篇文章?在了解区块链相关信息时(例如维基百科上的内容),我发现这些内容非常零碎和不连贯。要把这些零碎的信息整合在一起,形成一个完整的视图需要花费大...

814
来自专栏飞总聊IT

比特币和区块链(3):比特币的共识机制

0 上一篇我们详细介绍了不可篡改的账本区块链的数据结构的实现。其核心技术第一是数字签名,比特币采用的是椭圆曲线数字签名算法。第二是加密级别的哈希,比特币采用的是...

3319
来自专栏极客编程

如何面试中判断区块链以太坊工程师是否优秀 原

对优质区块链开发人员的需求很大,这是有充分理由的。区块链和ICO领域在过去几年中爆炸式增长。越来越多的人试图进入并在该领域中扬名立万。但是,为了获得成功,他们拥...

591
来自专栏区块链大本营

区块链构架就是造房子!10分钟带你走遍构建全程

2008年,一个叫做中本聪(Satoshi Nakamoto)的人(或团体)定义了第一个区块链。

702
来自专栏安恒信息

应对黑客的进攻——浅谈数字货币安全问题

摘要:随着智能合约飞速发展,越来越多的项目基于以太坊发行token,链上资产的类别和规模呈指数级增长,“虚拟世界”中的数字资产也点燃了黑客们的“热情”。以太坊区...

603
来自专栏Java技术栈

区块链技术

最近影响极大的“勒索”病毒袭转全球,造成数以万计的电脑中毒,主要是通过AES/RSA加密电脑办公文件,此种加密方式没有私钥无法解密,黑客提供了解密的方式,就是按...

4525
来自专栏区块链

一个针对可出售智能合约的协议

智能合约的很多使用场景都要有个 "持有者" 的角色。而 “持有者” 应该被赋予对智能合约的一些特权和责任。

4718
来自专栏区块链资讯

ETC核心技术团队CTO空降上海,引领高校区块链技术风潮

ETCDEV是以太经典的核心开发团队,也是个顶级又低调的“极客组织”。他们专注ETC核心项目开发,藏器于身。尤其,作为团队的技术领导者和建立者,Igor Art...

2015
来自专栏区块链资讯

跨链原子互换时代来临,BCH潜力无限!

  在数字货币领域中,许多用户经常遇到灾难性的损失,通常发生在那些专门用来存放和保管用户资产的交易所里。

1143
来自专栏企鹅号快讯

谈谈我对区块链的理解

通过之前研究的十大前景行业(带来高收入的 10 大开源技术,可以涨工资了!)提到人工智能,区块链,大数据都是今年以及2018年的技术热门趋势,本文专门介绍下什么...

2247

扫码关注云+社区