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:
声音 | 猎豹全球智库副院长周婷:数字货币领域中心化的趋势越来越明显:据慧聪通信报道,在2018ECIFestival国际数字商业创新节上,猎豹全球智库副院长周婷围绕区块链技术以及应用展开了探讨。周婷表示:“第一,数字货币领域中心化的趋势越来越明显;第二,效能亟待提高,能否支持大范围、商业化应用,有待实践证明。第三,安全性问题尚未解决,2.0时代是智能合约的时代,但智能合约漏洞以及共识机制被攻击的漏洞依旧包括区块链合约漏洞、公链漏洞的检测等。”[2018/11/30]
谢谢大家,今天非常荣幸来参加这个会议,今天我所带来演讲主题就是我们一起来浅析一下当下智能合约自动化安全检测的技术,今天我的演讲可能分两位个部分,首先第一部分我们会一起来看一下现在以太坊上智能合约发展的现状,第二部分基于这个现状了解,再详细描述一下现在智能合约自动化涉及的一些方法。首先我们一起看一下现在智能合约发展的一个现状,根据我们平台,可以知道在过去一个月当中,智能合约的数量每天还在以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肯定要变,通过逻辑和数据这两个维度,他们进行一些验证,最终验证模块现在提供了大概六、七个智能合约漏洞验证性的语言,这种语言都是以插件化来写的,其他的安全开发者可以在不断丰富漏洞的验证语言。最终我们在对自动审计进行评估的时候,是从要自动化程度、漏报率、误报率提供这件事情,我们现在知道数据就可以绑定出来,检测出来数据还是需要人工进行二次确认,这个工作是十分繁琐的,经过这种方法可以是误报率会降低,这两种符号执行和符号抽象的自动化审计方法。最后回顾一下,现在自动化审计方法分为三种,特征代码匹配,形式化验证以及符号执行、符号抽象。回顾整个浅析过程,我们可以清楚知道,现在自动化审计方法是在一个很不成熟的阶段,主要面临三大问题,第一个是误报率高,并不能做到完全自动化,还需要人工参与。第二个是自动化程度比较低,还需要不断去审计它,第三个审计时间比较长。最后就是回顾一下我们整个分析,首先我们明晰一下智能合约发展现状,又检测自动化审计方法,左右各有我们技术交流群,有感兴趣小朋友欢迎加入,可以一起更加深入的讨论,这就是我今天所分享的内容,谢谢。
猎豹移动首席执行官傅盛:有区块链计划,需要时间:3月25日,猎豹移动首席执行官傅盛在深圳IT领袖峰会上表示,有区块链的计划,需要一些时间。另外,中国的互联网的应用从今年开始都会全球化,国内企业是具备竞争优势的。比如移动游戏、直播类应用在美国排名都靠前。[2018/3/25]
猎豹移动傅盛:2017年总营收49.75亿元,已着手研究区块链:今日,猎豹移动(NYSE: CMCM)发布了截至2017第四季度财报及2017全年财报。财报显示,第四季度总收入环比增长16.2%至13.88亿元,移动收入同比增长17.8%至12.18亿元,创历史新高。对此,猎豹移动董事长兼首席执行官傅盛表示:“猎豹移动在2017年四季度取得了十分强劲的业绩。未来,我们将继续使用人工智能技术提升我们的产品和服务。我们也相信诸如区块链等新科技将为猎豹带来更多发展机会。”[2018/3/19]
金色财经独家消息,猎豹移动海外官方宣布推出数字货币钱包SafeWallet:金色财经独家消息得知,猎豹海外官方宣布推出移动安全数字资产钱包SafeWallet。据了解,SafeWallet配备了三层安全防御体系,在用户行为安全、手机安全防御和资产安全管理三个关键领域进行全方位的安全管控,最大化地保护用户的数字资产安全,防止资产丢失或被盗。目前,SafeWallet支持比特币(BTC)和以太币(ETH)等币种。目前,SafeWallet已在谷歌商店开放下载。[2018/1/31]
猎豹CEO傅盛:将从安全领域切入区块链,因为对CES新奇感已过:猎豹的CEO傅盛第三次来到CES时表示他对CES的新奇感正在减弱,准备将要从最擅长的安全切入区块链,不涉及到交易,帮助用户保护数字资产。[2018/1/11]
据Bitcoin.com9月4日报道,伊朗已经同意承认加密货币挖矿为产业,负责监管外汇和货币政策的伊朗中央银行将在未来18天内为该产业起草政策框架.
1900/1/1 0:00:009月28日,有消息称,阿里巴巴达摩院在其金融科技领域中上线区块链实验室,张辉出任负责人。公开资料显示,张辉同时也是蚂蚁金服区块链部门负责人.
1900/1/1 0:00:00编者按:本文来自新湃资本,作者:王卓黄明乐,星球日报经授权发布。获取完整版《稳定币市场分析报告》,请关注新湃资本,后台回复“稳定币”.
1900/1/1 0:00:00编者按:本文来自哈希派,作者:不碎,星球日报经授权转载。"闪电网络"是JosephPoon和TadgeDryja在2015年提出的一项链下扩容解决方案.
1900/1/1 0:00:00编者按:本文来自哈希派,作者:不碎,星球日报经授权发布。!webp\"data-img-size-val=\"633,382\"\u002F\\>通常情况下,我们可以通过交易平台来获取比特币,而.
1900/1/1 0:00:00编者按:本文来自哈希派,作者:不碎,星球日报经授权转载。当你从一个比特币地址向另一个比特币地址转账时,通常需要附加一笔额外的手续费给矿工.
1900/1/1 0:00:00