星球日报
搜索
手机客户端
iPhone · Android
公众号
微信公众号

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

2018-09-07

区块链生态的安全问题不是一家公司可以搞定的。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

9 月 5 日,在由 Odaily星球日报主办、36Kr 集团战略协办的 P.O.D 大会安全论坛上,PeckShield 研发副总吴家志发表题为《区块链智能合约及公链安全》的演讲。

在演讲中,吴家志指出,整个区块链生态存在的安全问题包括智能合约、基础设施、钱包问题、矿池问题等。

他还表示,因为区块链相关的项目方众多,有各种公链,公链有各种实现,智能合约也有各种实现,这些安全问题不是一家公司可以搞定的,需要更多的人来共同做好这件事,所以 PeckShield 与白帽汇旗下的 BCSEC 共同成立了 DVP 漏洞平台。该平台在 7 月 24 号上线,目前收到 1700 多个漏洞,相关的厂商已经有 705 个,总共注册白帽子 1 万多。PeckShield 希望跟所有相关方合作,把整个生态做得更好。

以下为吴家志演讲全文,enjoy:

各位嘉宾下午好,我是吴家志,我来分享一下 PeckShield 的研究成果,我们公司是从今年年初开始区块链研究的,算起来到现在,差不多有半年的时间。最早从代码开始研究区块链相关的信息,到现在研究范围扩大到整个区块链生态的各个环节。大家知道我们名字可能从是智能合约问题曝光开始,后来我们也做了很多跟公链相关的漏洞披露,也有做像前面嘉宾所说数据分析方面的研究,发了一些跟数据有关的快讯,还有热门游戏相关的漏洞分析等等。

我们有一个目标就是希望整个生态能够在一个安全的状态下运转。我们认为区块链某一定程度会取代人类的一些经济行为,跟以往的经济行为很大不一样的是 “去中心化”。所以没有这种机构保证你的资金安全,你钱丢了是没办法找一个法院或者银行帮你追回来的,在这样环境下,整个生态安全问题就显得至关重要。

先做一下自我介绍。最早之前是在学校,2015 年来到北京工作,在 360。如果说你们从 2013 年开始到 2015、2016 年,有用安卓手机的话,可能里面就有我写的一些代码。今年之前,我都是以系统安全研究白帽子的身份,在做一些事情,后面开始做区块链相关的安全研究。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

我最近也在做一些数据分析,这是一个比较大的趋势图。我第一次看这个图怎么这么大,你可以看到,我们现在在这,9 月初是在这,去年的时候是在这里,有两条线,蓝色是我们监控上面每个月新增的合约数,可以看到蓝色的波动,绿色是我们监控到的数,可以看到去年这时候是有一个下滑,这个原因大家应该也知道。到年底的时候,有各种包括以太猫在这个时间点,有一个攀升。7 月份稍微有点返升,上个月又稍微凉了一点,大家也明白。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

刚才那个图是比较简单的数据,我们统计每个月的量,看他的情况是怎么样。下面这个图就比较有趣,我来解释一下。Homestead,这个阶段是到 155 万个 blknum,一个圈代表一万个区块,所以这个图上有 115 个圈。再来是X坐标,意思是说这一万个区块里面存在一个以上交易的块数,举个例子,这一块可能差不多是 8200,这一万个块里面有 82% 左右不是空块。所以就你可以理解为这个圈如果在图的越右边的话,就表示这个网络是满载的情况。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

再来看 Y 坐标,就是这一万个块里面的平均 TX 数,最大的值是 200 多,为什么是这个值,原因是每一个块是有 gas 上限的,你可以理解为每一个块承载的 TX 数是有限制的,最一开始状态是点都是在很低的地方,但是有一个往右边的增长,一开始可能很多都是空块,像创世块就在左下角,就是没有任何 TX,进入下一个阶段可以看到这个图开始有一些往上增长,但也有往左的,还是属于一个网络不是太拥塞的情况。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

到拜占庭这个时间点往右边的圈越来越多了,整个网络变得比较拥挤。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

到最近这一年以来,基本就是贴到最右边去,可能是由于各种现象级的游戏,还有包括黑客攻击什么的,所以现在,可能随便出来一个现象级事件,包括 Fomo3D 这一类游戏,都可能导致这种结果。这个是我们 PeckShield 从数据方面观察到一些现象。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

接下来分几个层面去讲整个区块链生态的一些安全问题,这里面大家可以看到,比如智能合约,有 infrastructure,还有钱包问题等其他环节,我们都有一些研究。 

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

首先我先讲一下智能合约的问题,这个跟大家最早知道 PeckShield 的美链事件是类似的一个问题,代码在这个地方,这些 value 加起来之后出现一个溢出的数,导致 amount 检查会被绕过,我们看画面右边有一个案例,右面可以看到两个手机的样子,旁边是我攻击的流程,等一下你会看到右边我更新的一下会凭空造出两个很大的数字,后面的零数不过来,就是通过这种方式,我们生成两个不同地址,分别是那两个手机的钱包地址,造成这个地方溢出,然后这个检查绕过,这边就等于看到生成很多数字资产的地方,就是在 balance + = value 这个地方,空手套白狼,这是一个挺严重的问题。

这样的问题有一个比较公认的解决方法,就是在这个地方,是一种比较严谨的计算函数库,叫 Safemath。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

这边是一个 allowance 的运算,它可以保证你不会溢出,那为什么你看我标题写的是 Unsafemath 呢?我们最近发现一个很有趣的现象,在你右手边,这里 safeSub 的实现里,用 assert 确保 B 小于或对于 A,也就是说你不能用一个比较小的数减一个比较大的数。assert 这个方法可以保证你这边错的时候,会可以把你的 gas 烧完,让这个 TX 结束,这也是刚刚郭老师讲的攻击里面的细节。就是说本来架构里面有一个这样的机制存在,但他的这个 safeMath 实现里,多加了一个 assert 函数,在发生错误的时候直接 return。所以选择你的安全函数库的时候也要注意一下。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

再来我讲一下关于 infrastructure 的研究, 左边这个截图是漏洞奖励计划的网站,PeckShield 现在是暂时排名第五,目前已公开有三个比较早期提交给基金会的漏洞,都是跟公链有关。我今天稍微介绍一下其中的一个,已经修复的,大家不用担心,如果你把 Geth 升级到最新的,这个漏洞不存在。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

这个漏洞简单说一下,我们命名为叫做 EPoD,只要发一个数据包给你,你笔记本现在跑一个客户端,我知道你的 IP,直接发给你,你收到后,你的客户端就会崩溃,这个崩溃听起来好像没什么,但是我直接广发这个数据部就直接死一片,你其实可以很简单联想到这个可以拿来做算力的攻击。

代码的细节不讲太多,简单说就是我把某一个数据弄成负 1,这边代码实现是把这个数 + 1,当你要分配内存大小,负 1 + 1 就是零,我又去 access 负 1 这个地方的位置,最终导致越界访问,程序就崩溃了。

我们直接看案例比较简单一点。

PeckShield 研发副总吴家志:需要更多人合作解决区块链生态安全问题 | 区块链P.O.D大会

右边这个就是我运行的客户端,这边先去证明一下我客户端是从官网上面下载,保证说这个客户端不是我自己修改过的,是官网直接下载的。等一下检查完之后左边会出现两个窗口,左上角是攻击代码运行情况,左下角是一个抓包的画面,刚刚我做了一个操作,就是先把网关掉,确保这个机器已经没有网了,所有网络测的数据包都是来自本机的包。看到最右边已经把 Geth 客户端领跑起来了,这边是我刚才抓到的 UDP 包,如果你们有了解,这种包不需要建立连接,我可以在网关或者什么地方,可以扩散我的攻击,左上角是我攻击代码,我攻击的目标是 127.0.0.1,这我们本机的 IP,这个是攻击的包,所以只要在某一个版本以下的 Golang 客户端收到这个包就会崩溃。

这样的漏洞其实我们有一整个系列,这是最早被公开的一个,我们在明天的互联网大会上会讲,这整个系列会有好几个类似这样的案例。

以上是我针对公链还有智能合约的安全问题简单做的两个案例,大家理解一下就可以,如果真的要看代码,可以关注下 PeckShield 的官网。

最后,我要说是我们最近跟白帽汇旗下 BCSEC 合作的一个项目,我们感觉区块链相关的项目方实在太多了,有各种公链,公链有各种实现,智能合约有各种实现,所以我们就开始觉得说,这个安全的问题其实不是我们一家公司可以搞定的,我们需要更多的人同时来把这件事做的更好,所以我们成立一个平台叫做 DVP 漏洞平台。最右边是漏洞提交的情况,简单说我们就是利用一种众测方式,集合所有有安全能力的研究人员或者白帽子,让项目方把他的项目在我们平台上面悬赏。比如说我现在要测试 1.0 版本,你找到一个什么样等级漏洞给你怎么样的报酬,通过这样方式鼓励白帽子帮我们把整个生态做的更好。这个平台是在 7 月 24 号上线,目前收到 1700 多个漏洞,相关的厂商已经有 705 个,总共注册白帽子一万多。这些是已经入驻这个平台的厂商,包括我们自己公司网站也放在上面做悬赏。

PeckShield 其实希望跟所有项目方合作,把整个生态做的更好,一开始我也讲到这件事情,最右边是我们公司的官网,我们会不定期在上面发布我们最新的研究成果,大家可以关注一下。

以上就是我今天的分享,谢谢。

原创文章,作者:余顺遂。转载/内容合作/寻求报道请联系 report@odaily.com ;违规转载法律必究。

参与讨论

登录后参与讨论

总文章数:


分享至

微信扫一扫分享

0
区块链安全

Copyright 2017-2018 Beijing Star Node Media Culture Co., Ltd.