9月5日,在由Odaily星球日报主办、36Kr集团战略协办的P.O.D大会安全论坛上,猎豹区块链研究中心安全专家杨文玉发表题为《智能合约自动化审计技术》的演讲。杨文玉开场介绍了智能合约发展的现状。大部分人认为区块链现在是一个寒冬时期,但是据猎豹区块链研究中心统计,过去一个月中,智能合约每日新增数量为1317个。研究中心收录的项目中,区块链基础设施占9.38%,游戏和VR4.44%,商业和零售3.6%,社交媒体与通讯3.4%。在数量稳定增长的同时,智能合约还面临着安全问题。从2017年到2018年6月,智能合约漏洞频繁爆发,带来大量资金损失,也使得区块链甚至智能合约的一些开发者或者用户对智能合约的安全性产生质疑,也阻碍了以太坊之后的发展。除此之外,Fomo3D在兴起的时候,仅仅在第二天就出现了大量的山寨合约。山寨Fomo3D游戏开发者更改了积极分配的逻辑,导致投入的资金大部分都流向山寨合约开发者,也对DApp发展造成阻碍。在这样的背景下,如何有效保障海量智能合约的安全?杨文玉认为,最好的方法是降低人工审计复杂度,采用智能合约自动化审计。具体来讲,自动化审计方法主要分为三类:第一种是特征代码匹配,就是对恶意代码进行提取、抽象,形成匹配模块对待检测源码进行检测。优点是速度快、迅速响应新漏洞,缺点则是使用范围有限、漏报率高。第二种是基于形式化验证的自动化审计方法。最早是在2016年由Hirai提供,Grishchenko和Hildenbrandt之后进行了改进,采用F*framework和Kframework,将EVM转化为一个Formalmodel。Formal是航空航天领域常见的形式化验证框架,而Kframework则是一个语义的转化框架。最后一种是现在最常用的方法,基于符号执行和符号抽象自动化审计。分析智能合约时,通过编译源码,可以形成EVMOPCODE,然后输入到自动化分析引擎,转化成CFG,再利用这两种方法进行分析。比较典型的是Oyente和Securify系统,可以降低误报率和漏报率,但是分析方法繁琐并且耗时。不过,杨文玉也指出,现在自动化审计方法处于一个很不成熟的阶段,主要面临三大问题:误报率高,自动化程度低、依赖人工二次审计,审计时间比较长。以下为杨文玉演讲全文,enjoy:
动态 | 猎豹移动已获得38项区块链专利:金色财经报道,11月13日,猎豹移动(代码:CMCM)发布了2019年第三季度财报,在工具行业整体下滑及国内广告行业疲软的态势下,猎豹移动实现总收入9.2亿。在区块链领域,截至目前猎豹移动已经获得包括“一种区块链助记词保管的替代方法”、“一种区块链私钥安全保管方案”、“硬件钱包安全存储方案”、“基于深度学习的话题相关情感分析”等38项区块链专利。[2019/11/14]
谢谢大家,今天非常荣幸来参加这个会议,今天我所带来演讲主题就是我们一起来浅析一下当下智能合约自动化安全检测的技术,今天我的演讲可能分两位个部分,首先第一部分我们会一起来看一下现在以太坊上智能合约发展的现状,第二部分基于这个现状了解,再详细描述一下现在智能合约自动化涉及的一些方法。首先我们一起看一下现在智能合约发展的一个现状,根据我们平台,可以知道在过去一个月当中,智能合约的数量每天还在以1317个的平均增长率高度稳定地增长着,可能和我们所理解的区块链现在是一个寒冬时期,所不太一样这种增长率还比较稳定的。其次我们通过一些NLT方法,把智能合约领域划分出来,除了一些敏感领域,现在智能合约比较多的应用在一些基础设施,商业零售,游戏以及社交媒体和通讯。这是一个智能合约大的现状,智能合约现在面临一个安全现状是什么样的,可能刚才两位嘉宾已经都进行了非常详细的描述,从2017到2018年6月,这种智能合约漏洞频繁爆发,每次都带来大量资金损失,也使得区块链甚至智能合约的一些开发者或者一些用户对智能合约这种安全性产生一些高度的质疑,也阻碍了以太坊之后的发展。除此之外,我们还可以看到像刚才嘉宾讲到Fomo3D这件事情,除了基本智能合约安全,现在安全受到极大的关注,之前Fomo3D在兴起的时候,仅仅在第二天就出现了大量的山寨合约,山寨的Fomo3D,在这种游戏当中,其实开发者更改了积极分配的逻辑,使得其实玩那个蜂窝游戏过程当中,投入的资金大部分都是流向山寨合约开发者,也对DApp发展造成阻碍。现在面临一个问题是如何有效保障海量智能合约的安全,也是我们今天要讨论的问题,也是第二部分想跟大家分享一个现在智能合约自动化审计技术的发展。再回顾一下,现在智能合约截止到昨天中午12点,以太坊总共有193万个合约,日增长率稳定增长,现在审计方法有人工审计,以及自动化审计。在海量智能合约当中,我们最好的方法就是降低人工审计复杂度,从而让更多通过自动化审计进行。我们把自动化审计分为三个部分。首先第一种是特征代码匹配,第二类是基于形势化验证的子都化审计方法,最后一种是基于符号执行和符号抽象自动化审计。首先看特征代码匹配,从名字可以很清晰理解到,就是对恶意代码进行提取抽象,我们是一种语义匹配,匹配静态原代码,审计的方法优点是很显而易见的,比如说速度很快,因为对源码进行一个字符串匹配,第二个可以迅速进行新的漏洞,他审计出现一个新的漏洞,我们就可以快速提交一些新的匹配模式。他缺点在哪里,再来看一下,我们所理解的现在区块链都上应该是公开透明的,但实际情况并不是这样,我们大概做了一个统计,目前代码的开原率仅仅只占48.62%,就是说在以太坊上,其实有超过一半合约是不开源的,只暴露code,刚刚那个嘉宾也说,他们也费了十分大的力气去立项这个code这种限制就导致这种方法使用范围有限,传统的静态审计方法比如说App检测,会调用一个库里面确定唯一一些函数,对他进行审计,智能合约里面一些函数一些特征变化性比较多的,所以说漏洞率比较高。第二个方法,我们就来探讨一下现在比较火的,基于形式化验证的自动化审计,形式化验证审计智能合约安全,最早是在2016年由Hirai提供的,他提出了一点,他当时拿出逻辑交互证明器,通过IsabeldeLem-Language->Formal-model,通过形式化model验证,来判断代码逻辑是否存在问题,这项工作最后的两个把形式化方面进行进一步改造,他们放弃Lem-language也是比较低效的转化方式,他们采用了F*framework和Kframework,将EVM转化为一个Formalmodel,而Formal可能就是经常在航空航天领域当中做一些形式化验证的框架,而Kframework则是一个语义的转化框架,这两个比较有代表性的技术研究,如果想更加深入了解可以参考下列的一些论文。第三点就是今天想要着重跟大家交流,以及现在最常用的一些方法,就是基于符号执行和符号抽象的自动化审计,这种自动化审计现在看一下,我们在分析一个智能合约的时候,首先要明确分析对象是什么,像我们刚才在解释特征匹配代码当中,我们知道现在EVM上智能合约代码大部分是不公开的,我们现在分析对象就确认应该是EVMOPCODE,在通过一些源码,我们通过编译,可以形成EVMOPCODE,输入到自动化分析引擎。在这种基于符号执行和符号抽象化自动化审计框架里面,有些共有的特性,OPCODE在输入这个引擎当中,都会转化成一个CFG,就是一个一个控制流程图,通过这个CFG,可以简单了解一下这个CFG是什么意思,CFG就是把合约代码里面逻辑包装成哪个快,在里面逻辑分叉的时候,左边那个合约形成一个十分庞大完善的CFD,让程序员更好了解能够执行一些逻辑。在有CFG生成之后,现在就出现两种分析方法,第一类就是基于符号执行的验证,这类比较有代表性,大家都比较熟知像Mythril、Oyente、Maian,还有一种就是上个月刚刚公开的一个符号抽象分析的方法,就是Securify,今天主要跟大家讲一下Oyente跟Securify这两种系统具体的架构以及实现方法,首先我们来看Oyente,Oyente的逻辑我们可以从左边看到,在CFG申请之后,首先是一个explorer,会把代码当中每一个流程验证一边,进行一个形式化验证,就像这个我们验证是我们是否有一个X,使得X不仅满足C1、C2、C3条件,这时候可以判断状态是no还是yes,以此验证整个逻辑的流程。第二个coreanalysis这一部分其实是Oyente最为核心的一个部分,将刚刚输出的explorer这种路径,把它转化,只进行一些漏洞验证,目前只提供包括TOD和Timestampdependence和Mishandledexceptions,这三种验证,最后这个系统又能保证误报率和漏报率,他采用微软的开源的验证器,进行整体的架构封装,在刚刚我们讲述过程中,大家也应该了解到,在CFG转explorer验证的时候,我们是需要对他的循环,每次都是一个验证,所以这种分析方法特别耗时,并且不一定成功。这就是Oyente目前存在一个巨大问题。在这个问题基础上,像Securify,他们就提供了另外一种方法,他们认为现在合约的代码其实是特别容易解耦合的,不像传统代码,耦合性特别高,像合约代码这个一些比较固定形式化的解耦合模块,我们并不是需要对整个合约逻辑进行一个交验,我们对合约解耦各个模块进行分析,以此提高自动化程度,左边这个图是整个验证流程,把contractbytecode通过定义域语言之后有一个验证模块,特别像之前说的模式匹配,把一些漏洞转化成验证语言模式匹配框架,验证这个语义是否磨合这个。最后也给出一个report,通过这个自动化审计方法,最终可以输出钱包的管理者是可以被修改的。再具体一点是怎么做语义分析,其实分析这种explorer代码是从两个维度,第一个是逻辑,第二个是数据,逻辑方式定义两种逻辑,第一个叫做MayFollow,第二个叫做MustFollow,MayFollow的意思就是说,L2必须是有一条路径跟在L1后面,而MustFollow是说L2每一条路径都跟在L1后面,这两种区别定义了整个逻辑的框架。第二个是数据,怎么定义合约里面数据变化用了三种,第一个MayDepOn,就是两个因素,一个叫做Y,一个叫T,T变,Y可能变也可能不变。第二个是Eq,就是Y是由T决定的。第三个是DetBy,Y和T是一一对应的,只要T变Y肯定要变了,这里面用更加形象的方法来想象一下,其实Maydepon就像我们的T变量是time,在一段时间中,Y可能是一个值,T变,Y可能不变,第三个就是说一对一关系,就像我们算哈希,只要你T变,Y肯定要变,通过逻辑和数据这两个维度,他们进行一些验证,最终验证模块现在提供了大概六、七个智能合约漏洞验证性的语言,这种语言都是以插件化来写的,其他的安全开发者可以在不断丰富漏洞的验证语言。最终我们在对自动审计进行评估的时候,是从要自动化程度、漏报率、误报率提供这件事情,我们现在知道数据就可以绑定出来,检测出来数据还是需要人工进行二次确认,这个工作是十分繁琐的,经过这种方法可以是误报率会降低,这两种符号执行和符号抽象的自动化审计方法。最后回顾一下,现在自动化审计方法分为三种,特征代码匹配,形式化验证以及符号执行、符号抽象。回顾整个浅析过程,我们可以清楚知道,现在自动化审计方法是在一个很不成熟的阶段,主要面临三大问题,第一个是误报率高,并不能做到完全自动化,还需要人工参与。第二个是自动化程度比较低,还需要不断去审计它,第三个审计时间比较长。最后就是回顾一下我们整个分析,首先我们明晰一下智能合约发展现状,又检测自动化审计方法,左右各有我们技术交流群,有感兴趣小朋友欢迎加入,可以一起更加深入的讨论,这就是我今天所分享的内容,谢谢。
声音 | 猎豹区块链安全中心:建议各矿工、交易所、以及节点运营商将Geth版本升级到1.8.21:针对当前以太坊君士坦丁堡代码“可重入”漏洞:猎豹区块链安全中心建议各矿工、交易所、以及节点运营商,请将Geth版本升级到1.8.21或降级至 1.8.19 。此外,请将 Parity Ethereum钱包升级到2.2.7-stable或降级至 2.2.4-beta 。[2019/1/16]
声音 | 猎豹区块链研究中心杨文玉:智能合约自动化审计存在三大问题:据36kr报道,近日猎豹区块链研究中心安全专家杨文玉在关于如何有效保障海量智能合约的安全的问题时表示,最好的方法是降低人工审计复杂度,采用智能合约自动化审计。即主要通过特征代码匹配、基于形式化验证的自动化审计方法、基于符号执行和符号抽象自动化审计这三类方法。此外,她也指出,现在自动化审计方法处于一个很不成熟的阶段,主要面临三大问题:误报率高,自动化程度低、依赖人工二次审计,审计时间比较长。[2018/9/10]
动态 | 猎豹大数据:区块链相关App流量与数字货币交易相关:据腾讯网报道,猎豹大数据显示,数字货币交易是区块链相关App的第一个爆发点。越接近交易的App,流量也越大,具体为:钱包/交易所>挖矿/行情>资讯。在过去半年中,区块链相关App的渗透率基本随比特币价格波动而波动,同样越接近交易的App,渗透率走势也越贴近币价。[2018/8/16]
猎豹CEO傅盛:将从安全领域切入区块链,因为对CES新奇感已过:猎豹的CEO傅盛第三次来到CES时表示他对CES的新奇感正在减弱,准备将要从最擅长的安全切入区块链,不涉及到交易,帮助用户保护数字资产。[2018/1/11]
本周,各国政府加大对数字货币、ICO的监管力度,但在区块链技术方面的应用以及政策上,均给予了一定支持。国外方面,监管趋严.
1900/1/1 0:00:00编者按:本文来自区块律动,作者:0x20,星球日报经授权转载。当初那些蹭区块链热点的上市公司现在怎么样了?2017年是区块链市场突飞猛进的一年,无论是已经上市的正规军,还是通过ICO融资的杂牌军.
1900/1/1 0:00:00千亿级的旅游市场中,服务赛道从不乏创业者,如何在OTA巨头之外找到新的差异点?这是大多数创业者要交的一份答卷。星球日报此前接触的秀豹科技认为,区块链可以改造旅游业态也可带来新的玩法.
1900/1/1 0:00:00据彭博社消息,沃尔玛及其子公司山姆会员店要求其绿叶蔬菜供应商从2019年9月开始使用区块链技术进行实时的、端到端的产品溯源。IBM将为其提供底层技术支持.
1900/1/1 0:00:00编者按:本文来自一本区块链,作者:棘轮,星球日报经授权发布。2015年,《经济学人》杂志的一篇封面报道,让区块链第一次为世人所知.
1900/1/1 0:00:00编者按:本文来自:链内参,作者:内参君,星球日报经授权转载。全球四大会计师事务所,通常简称“四大”,指的是:普华永道、德勤、毕马威、安永.
1900/1/1 0:00:00