风险提示:请理性看待区块链,树立正确的货币观念和投资理念,不要盲目跟风投资,本站内容不构成投资建议,请谨慎对待。 免责声明:本站所发布文章仅代表个人观点,与CoinVoice官方立场无关

对话 PeckShield 创始人:智能合约安全面临的挑战及应对措施 | Unitimes AMA

Unitimes
2019年06月10日

 

Unitimes AMA(Ask Me Anything)是 Unitimes 重点打造的微信群线上问答系列活动,每周举办一期。我们邀请发展较成熟的区块链项目的创始人、CEO、CTO或核心开发者等嘉宾做客社群,与群成员就该项目的突出技术亮点以及用例等进行高质量互动问答,旨在学习交流区块链最新技术和应用。

期数:第30期

特邀项目:PeckShield(派盾)

特邀嘉宾:蒋旭宪,创始人

主题:智能合约安全面临的挑战及应对措施

AMA分为固定问答和自由问答两个环节。

固定问答

1

Unitimes:蒋教授您好,欢迎参加 Unitimes AMA。请先介绍一下您自己以及 PeckShield 吧!

答:大家好,我是PeckShield创始人蒋旭宪,在此之前曾担任奇虎360首席科学家。PeckShield「派盾」成⽴于2018年,定位于做区块链数据与安全服务,核心团队有全球视野,主要由安全顶尖研究人员及顶级学府博士组成, 曾服务于360、Google、Microsoft、Intel、Juniper、Alibaba等全球知名厂商,团队成员也多次因为安全漏洞方面的研究和发现获得厂商官方致谢。

 

经过一年多的成长,PeckShield与全球多家交易所、数字钱包、公链、矿池、智能合约、DApp开发者等生态合作伙伴达成了战略合作,服务体系包括: 安全审计,防御部署,应急响应,安全顾问,漏洞赏⾦,DApp安全,实时风控等方向。基于我们在代码分析、操作系统、⼤数据等安全业务领域积累的多年经验,PeckShield旗下成立了DAppTotal、DAppShield等多个独⽴安全服务品牌,致力于提升区块链生态整体的安全性、隐私性以及可用性,并为生态用户提供切实有效的安全解决方案和服务。 公司自2018年成立以来,连续发现并命名了包括美链BEC在内的多个智能合约重大安全漏洞,还多次发现了以太坊、EOS等多条知名公链的重大安全漏洞,例如以太坊“致命报文”漏洞、EOS内联反射 (inlineReflex) 漏洞、交易阻塞漏洞、知名DeFi项目MakerDAO治理合约中的投票机制缺陷等,并获官方致谢。PeckShield还被Etherscan.io 纳入智能合约安全审计推荐名单,同时跻身“以太坊赏金猎人”全球排名Top 3。

2

Unitimes:PeckShield 审计过了这么多智能合约,最常见的安全漏洞有哪几个?

答:最早是围绕以太坊ERC20的安全漏洞,包括溢出和权限设置方面的问题:batchOverflow, transferMint, proxyOverflow, transferFlaw, evilReflex, ownerAnyone等,此后在DApp生态起来之后,又围绕随机数问题和公链特性出现了很多攻击方式,比如:假EOS攻击,伪造转账攻击、假通知攻击、交易回滚攻击、交易阻塞攻击等等。

3

Unitimes:安全漏洞的原理是什么?可以给我们举两个例子说明一下吗?

答:安全漏洞的概念比较广,也通常泛指硬件设备,软件实现,通讯协议在具体设计,实现,或运营上存在的缺陷或不足,使攻击者在未授权的情况下访问受限信息和服务,甚至直接破坏系统正常工作。漏洞的利用并不一定会给攻击者带来直接的经济利益,但肯定会给相关系统的正常运营和服务带来负面影响

区块链领域的安全漏洞有其特殊性,除了常规的编程语言相关的安全问题(比如整数溢出),还有区块链自身的分布式运行环境带来的安全挑战,以及区块打包顺序和算力相关的安全问题。当然,链上运行的DApp有各自的业务逻辑,业务逻辑设计和实现上的不完备也可能带来安全隐患。

下面以一个典型的EOS上面的DApp随机数漏洞攻击为例。

 

EOS.WIN主要是由猜数字和21点两个游戏组成,猜数字游戏玩法,用户可以任意选取一个数字,系统会根据用户所选大小给出相应赔率,然后系统会随机给出一个数字,如果结果和用户的大小选择匹配则视为中奖,获得金额为投入金额乘以赔率。该游戏的开奖过程为:游戏合约收到玩家的交易请求,延迟1.5秒后执行开奖方法(resolved 函数),并在开奖方法中使用开奖序号参与随机数生成,同时通过内联调用方式将开奖结果信息通知给玩家(receipt 函数),再将开奖序号加1并保存。开奖流程如下图所示:

 

PeckShield 安全人员分析发现,该合约的随机数是通过 get_random 函数获得,影响该随机数生成的因素有:txid 为交易哈希 ID, tapos_block_num成交块高度, tapos_block_prefix 区块 ID 前缀, bet_id 全局开奖序号等。攻击者利用了开奖序号( bet_id)参与随机数生成和内联调用失败可导致状态信息回滚的特性,在同一时间控制多个合约帐号同时发送交易请求,来尽量保证最后请求的帐号能够获得期望的开奖序号参与生成随机数,以赢得奖励。

具体攻击过程如下(如下图):

 

一、攻击者部署了6个攻击合约,调用攻击方法时,在攻击合约中同时让这6个帐号发送交易请求,这样这些请求将会在同一个块中开奖,由于过程一致,开奖交易中的 tapos_block_num 和 tapos_block_prefix 是一样的,只有bet_id可能不同。

二、攻击者的前5个攻击合约,在收到开奖通知时,能够获取到当前的 bet_id,并判断此 id 能否让最后的帐号中奖。

1)如果计算得知最后的帐号不能中奖,则该帐号的开奖通知正常执行,使得后面的帐号使用新的开奖序号来计算随机数;

2)如果计算得知最后的帐号能中奖,则使该帐号的开奖通知失败,那么这个开奖序号被保留下来,直到最后的帐号中奖;

更多的安全漏洞和攻击案例,可以参考PeckShield公司官网的blog文章(https://blog.peckshield.com/)。

4

Unitimes:近年来发生了不少交易所黑客被攻击的时间。请问去中心化交易所是一个更安全的选择吗?去中心化交易所本身有哪些潜在安全风险?

 

中心化交易所一直是黑客攻击的目标。自从2019年以来,大家知道的被攻击的中心化交易所至少有4家:Cryptopia, DragonEx,Bithumb 和 Binance,攻击者都是追求利益回报的。大家知道,中心化交易所持有币的数量和价值都远远大于去中心化交易所。攻击者在选取攻击目标的时候,理所当然的会选择价值更大的一方。另一方面,去中心化交易所的资产是由合约掌管,而且大多数还是开源,但是完全开源的智能合约也有助于全世界的程序员帮你审核项目有没有漏洞,另外整个交易流程的公开透明,其出问题的概率也就更低。所以相对而言,去中心化交易所是一个更安全的选择。不过需要注意的是,去中心化交易所在用户体验、交易深度、和使用门槛上还不如中心化交易所。

 

从2018年1月至2019年5月,交易所共发生23起安全事件,造成损失达10.19亿美元。

同时,去中心化交易所的资产完全由智能合约管理。如果该智能合约存在安全漏洞,那么智能合约上的资产也自然存在安全风险。我们之前报导过的假充值问题也曾经在去中心化交易所出现过。同时,因为去中心化交易所缺乏监管、审核,不需要KYC等,也可能会给黑客提供了洗钱的便利性。

5

Unitimes:区块链的各个环节——交易所、矿池、钱包、智能合约,哪一个最容易出现安全问题?安全漏洞对哪一个来说影响最大?

从团队的技术实力来讲,通常是交易所> 矿池>钱包> 智能合约,所以最容易出现问题的是技术投入偏弱/入门门槛较低的智能合约,从DAppp频发的安全事件可以看出,有时甚至会一天连续发生几次针对dapp合约的攻击事件。 但从危害程度来说,当然还是交易所的影响最大,由于交易所掌管着大量的数字资产,最容易被黑客盯上实施攻击,一旦有攻击事件发生损失也非常惨重,此前全球知名交易所币安就因黑客一系列网络钓鱼和病毒等攻击方式,被盗损失7074枚BTC。我们数字资产护航系统(AML)全程追踪了黑客转移资产的全过程,如下图:

6

Unitimes:我了解到 PeckShield 除了提供安全研究和安全服务外,还提供数据服务。作为一个安全服务公司,你们为什么还会关注数据这一方面(而不只是专注代码)?

 

此前我在接受媒体采访时说过,很多人以为安全就只是代码层面,这其实是一个误区。安全能力的搭建离不开数据,异常数据是安全问题的突破口,数据追踪是实施应急安全响应的必然路径,安全最终是基于大数据的安全。所以我们定位为区块链数据和安全服务,也是基于这样的安全理念,尤其是在理解代码和业务的基础上,配合数据的异常预警和分析追踪,有效连接各个维度,把安全发现和预警及时通知生态中的各个环节。

目前,我们在各大DApp公链都布控了各类安全预警,一旦运行数据上出现异常行为(包括大额转账或获利),我们肯定会第一时间捕获,从而可以做到安全事件的实时预警。再结合我们深厚的代码逆向分析和强大的溯源能力,可以让我们面临各种突然袭来的黑客攻击事件能够从容应对。

7

Unitimes:对于智能合约安全的防范机制,您有什么建议?

目前各公链上对于智能合约开发都有相关的模板或安全模块可供开发者参考使用,例如以太坊 / 波场上的 SafeMath 库, EOS 亦有热心人士整理出常见的攻击手段与防护。建议开发者在写合约时一定要养成使用安全库的习惯, 并事先阅读过相关文档, 了解黑客攻击手法以避免不必要的损失, 若有需要使用到随机数, 也千万不要单纯的使用链上数据来产出随机数在合约上线前亦最好交由专业的安全公司进行审计, 并拟好安全应急响应SRC计划。

8

Unitimes: 听说您 6 月底会去参加在北京举行的以太坊技术及应用大会。可否给我们透露一下您的演讲主题?以及您对此次大会的期待?

非常感谢CSDN的邀请, 也非常感谢你们这次的采访活动!今年6月底的以太坊技术应用大会又可以和大家见面了。去年参加大会的时候正处于以太坊智能合约安全漏洞的频发高峰期,分享的是智能合约存在的安全威胁。过去一年,我们纵深关注了各大公链DApp生态的发展,也亲身经历和见证了DApp生态的演变趋势(包括经历的100多起安全事情)。

 

这次大会我的分享主题是《从游戏到DeFi,DApp生态面临的安全挑战》。去中心化金融DeFi目前是一个热点。根据DAppTotal整理的DeFi榜单,以Maker等为代表的DeFi项目总锁仓资金已经达到了11.3亿美元。随着越来越多的DeFi项目出现,一些安全问题也随即而来。由于DeFi类合约管理着大量的金融资产,其合约直接关系到每一个用户和锁仓资产,安全问题不容忽视。

 

自由问答

固定问答环节结束后,参与此次AMA的成员可以自由提问。以下为 Unitimes 从群成员的提问中精选的几个问答:

1

Unitimes 社区成员:在区块链1.0到2.0的发展过程中,区块链的安全问题有什么变化?

 

主要是增加了合约方面的安全问题。不过区块链1.0上面就有的共识问题,还会一直有。由于合约的图灵完备性,基于合约的DApp也自然丰富起来,安全问题也是随之而来。

2

Unitimes 社区成员:未来智能合约有哪些潜在安全威胁?

以前已知的安全问题还会持续有,未来智能合约的安全问题预计会有更多业务的考量。刚才提到的Maker治理合约安全问题,就是业务层面上面的安全问题,和已知的编码漏洞无关

3

Unitimes 社区成员:您创立PeckShield的初衷和愿景是什么?

一是自己从360出来之后,确实想创业。二是区块链的安全问题,比移动端更加重要。我们是看好区块链技术的发展和落地,希望也参与进去,能够make difference。

4

Unitimes 社区成员:安全问题发生之后,如何追回被盗资产?

这是个复杂的问题。我们也是有不少这样的案例。我的建议联系安全公司,实时知道资金的流向,一旦进入交易所,马上联系交易所冻结相关账户。同时准备好所需的材料,方便和交易所交涉。如果资产没有交易所,目前还没太好的办法。

 

这个是一起我们目前手上的案例,被盗资金的流向会越来越复杂。

这个是另外一例:

 

 

社区成员:是的,很多时候是直接存在了个人地址,并没有在交易所。

 

这个时候,我们需要等。很大的可能是攻击者迟早会去交易所套现的。

以上是本次 AMA 的全部内容,非常感谢社群成员对 Unitimes 的大力支持,感谢蒋教授!


声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。

评论0条

Unitimes

简介:全球视角,独到见解

专栏

更多>>