2. 您能先介绍下自己和Synopsys公司吗?
韩葆: 大家好! 我是韩葆,本次Qcon大会的讲师,今天我的议题是关于BSIMM软件安全成熟度的模型。同时,我也是Synopsys Software Integrity Group软件质量和安全部门,解决方案部门的业务负责人,所以很荣幸能够来到这里跟大家介绍我们的解决方案和我们提供的BSIMM架构。
韩葆: ,成立时间非常早,但是在超过40个季度我们仍然保持平稳的人流增长率,每年大约7%-8%的增长率。我们以前做EDA设计和芯片验证,一个小芯片可能有几百亿个,甚至上百亿个小的星体管,然后我们需要进行验证、设计、分析、模拟该观点或者该算法。它要求高可靠性和安全性。在之前华为、中兴,以及高通,它们的手机芯片运行后台都是使用Synopsys,而我们需要保证其质量安全,在研究过程中我们发现软件和硬件是不分家的,于是我们在验证中得出经验从硬件扩展到软件,逐步形成了我们Synopsys Software Integrity Group(SIG)这道产品线。软件质量安全的保障主要依赖于安全可靠性能、软件方面的验证和安全性的保障,以及整个全流程的进程。现在SIG的产品线覆盖各大硬件、软件、金融、汽车电子和互联网企业,可以说每个行业前十名的企业,只要有软件研发和IT团队,基本上都是我们的客户,以上便是Synopsys公司的介绍以及我们产品线的介绍。
韩葆: 我们是两方面兼顾,两条腿走路。大家也都知道硬件和软件不分家,比如我有一辆汽车,那么最基本的就是做汽车芯片设计,而上层的软件,无论是自研的还是外采的,无论是软件和硬件,都需要保证其安全性和可靠性,汽车是一个很典型的行业,如果我的汽车没有做安全性保障,它便容易造成人生命安全财产的损失。
韩葆: BSIMM软件成熟度模型是世界上最知名的信息安全咨询团队Cigital提出的,这个团队也是整个软件安全行业的创始人。迄今为止,该架构已发行了7个版本,那么BSIMM的概念或者观点是什么?其实就是把软件安全贯穿到软件研发或者软件生命周期之中去,大多数人可能认为传统安全就是当一个产品即将出现时,对其进行渗透测试、安全测试、功能性测试,而不将软件安全或者安全的概念提前到软件研发阶段。当我在设计软件时,我需要考虑安全的架构,验证的内容,人身的安全;当我进行源代码编写或者进入软件测试阶段,需要在每一个丝丝入扣的环节把安全和可靠性的概念覆盖出来,这就是BSIMM的概念。当然我们也跟非常多的研发团队和组织有着密切合作,BSIMM提供了一个评分的标准,判定软件团队当前的安全和可靠性的情况。相较于其他人而言,它可以时时甚至是不间断地做验证、做校验、做整体改善工作,BSIMM是一套非常完整的方法论,而且我们也有不同的工具和不同的方案覆盖到该方法论上,以及对其指标的实现。
韩葆: 其实这取决于组织或者企业自身的需求,有些企业可能选择在前期阶段,甚至项目没有立项的时候,便开始安全咨询和安全风险管控的工作;而另外一些团队可能选择在研发阶段发现问题时;也存在一些企业选择在产品上线时期进行渗透测试。不同的阶段有着不同的手段和方法。而面向整个软件生命周期来说,首先在进行需求调研时,便需要考虑安全概念;而到了架构设计阶段,在软件设计内容时就要考虑安全的架构和安全的思想;之后进行编码,代码编写特别容易导致Bug和安全漏洞,因此要正确选择使用的方法和工具,比如说静态的代码分析工具,Coverity,比如说网络协议的Fuzzing工具,Defensics,它也是心脏出血漏洞(HeartBleed)的发现者,是非常知名的安全漏洞,同时,第三方组件和开源代码可以采用ProteCode检测。那么使用的第三方组件和开源代码是否有法律的问题、安全的问题、版权的问题,这样的一套方法论可能需要后期进行测试时,手工或者自动化地给它做渗透测试。另一种情况,我的网站即将上线了,事故可能发生在上线时候,或者上线之后,总之有可能发生导致脚本攻击、SQL注入、目录遍历等状况,甚至导致服务器被人攻破,被直接恶意攻击。再举个例子, 手机应用APK,大家可能都有所不知,手机上也可以进行SQL注入,而且手机信息的泄露极其危险,因为权限没有做好管控有可能导致通讯录被泄露出去,这个阶段可能是测试的阶段,甚至也可能已经达到后期阶段,我们已经测试完毕准备发布,在发布之后,我需要时刻进行安全防护。因此大家不难发现整个的生命周期都需要覆盖安全概念,这便是BSIMM的完整流程,或者说BSIMM的方法论。当大家看BSIMM报告时,可能会发现230多个指标,有研发阶段、有设计阶段、有测试阶段,还有上线阶段,覆盖的面是非常广的。
韩葆: 这其实也是我一直在做的事情。我从2011年在SUN公司工作,离职后进入软件质量与安全保障领域,已经和几百个企业与研发团队进行过交流,并且发现大家都觉得安全是需要放在最后考虑的,很少有人选择放在前面。我时常说的是,当你的软件步入设计阶段或者研发阶段,就必须需要考虑安全问题,因为当你到达后期阶段,发现漏洞,这时才去修复就已经晚了,骨架已经崩溃、损失已经造成、服务器已经被人攻击、被攻破,在这种情况下,亡羊补牢,为时已晚。所以我们一直让大家在软件开发前期阶段就关注安全问题,好在大家都能够接受这样的概念,比如说我们现在正在接触并且已是我们实际的客户,腾讯、阿里巴巴、华为、中兴、联想、思科等;还有传统的硬件行业,比如说高通、华为,当然也包括其他一些芯片设计厂商,不过有些机密信息我们也无法透露。同时我们看向汽车行业,比如说比亚迪,上海汽车,他们也开始关注前期安全问题,正所谓未雨绸缪,如果你在前期的阶段,比如说设计阶段和研发阶段没有考虑安全,那么架构和体系是难以建立的,若体系建立失败,那么整个架构便会不牢固,在后期造成造成严重问题,比如信息安全和信息泄露的问题。我在来的路上看到有一个非常知名的视频网站,泄露了用户的用户名和密码信息,还有以前的乌云网,每天都会有非常多的安全漏洞爆发出来,这是真实存在的状况,因此我们的Synopsys一直想要去改变这个状态,全程地将安全稳健起来。
韩葆: 每个行业都是不一样的,但又可被认为是殊途同归。举个例子,典型的软件解决方案,无论是甲方还是乙方,它们都需要有安全的防护和安全的保障体系。当我去采购软件时,没有人可以证实该外采软件的真正安全性,而你要做的正是去确保你所试用的二进制文件、EXE文件和APK文件的安全性,查看它里面是否包含已知安全的漏洞,但他们都不知道需要在这个阶段去做安全的防护。第三方组件的检测是ProteCode的内容,对于方法论来说,它其实就是基于海量的信息去匹配出已知的安全漏洞,比如说我自有的研发团队有很多的研发人员,但水平良莠不齐,有高有低,有人不小心将安全漏洞写进去,但他却不知道,那你该怎么做?这是静态代码分析,以及安全渗透测试技术覆盖的内容,那么静态代码分析好处是什么呢?它能够在编码的阶段找到超多质量性和安全性的问题,比如说Coverity,Coverity是来自于斯坦福大学的静态分析工具,该工具能够进行扫描,比如C、C++、Java、C#、Python、PHP、Objective C,包括移动端和服务器端,甚至前端的JavaScript,其安全性的漏洞、以及质量性风险和可靠性问题都可以直截了当地被体现出来,程序员可以快速地进行修改。关于硬件设备,比如摄像机、摄像头、安防、汽车等,这些硬件的设备很容易造成的问题是什么呢?第一,造成可靠性的问题,举个实例,比如我的路由器,其核心的路由节点如果停止了三分钟,那么可能造成上亿人民币的损失,这是十分危险的情况;第二,造成安全的漏洞,比如说之前爆发的心脏出血的漏洞,它影响整个互联网2/3的网站,所有的网站都不得不在那天打补丁,大家可能并不了解该漏洞,这是Defensic工具,也是我们网络协议Fuzzing的产品发现的,并且在很多的方案和手段上都需要使用的工具,但是要完成全程的信息安全保障问题,建立此类体系是件困难的事情,因为信息安全是水桶效应非常明显的行业,若我有哪一块方面做得不好,那么该水桶里面的水就一定是在最低那一块进行防护,也就是说当我们看到实际状况,我们的目标就是什么呢?我们要把所有的短板都提高,让整个信息安全的架构变得非常的稳健,这是Synopsys SIG这一道产品线一直在进行覆盖的,这也是我们的目标。
9. 那么您能否再介绍一下企业软件安全保障的方案呢?
韩葆: 就企业安全保障而言,主要分为硬件和软件两个方向,我们覆盖更多的是软件行业的保障,整个信息安全的体系其实主要包括以下两个大部分,第一是软件的保障,因为软件是信息的载体,如果软件没有被覆盖,即安全线没有被保障,那么你的信息也不可能得到保障;第二关于硬件,比如防火墙、身份验证肯定都是必不可少的,并且它们的发展已经非常成熟;第三是服务或定制,不同企业的信息安全需求和信息安全状态都是不一样的,你需要定义它当前的状态,同时还需要为此搭建信息安全体系和架构,然后实施,实施之后再去判定其架构是否足够完美,其指标是否达到标准,若尚未达到要求,那么便需要从头开始,重新设计架构,并且不断地维护,这便是BSIMM的概念之一,也是我们信息安全体系想要达到的目标,也是我想为大家介绍的内容。
韩葆: 其实这是很难界定的一个概念,往往我们看到的,研发团队的任务已经进行到一定阶段时,才去考虑安全问题,然后进行沟通,进行使用BSIMM架构,开展代码静态分析,第三方组件检测,模糊测试或者安全渗透测试等活动,其实是很后期的阶段。而对于国外的成熟团队团队来说,他们从最初始的阶段,从程序、软件,甚至说需求调研阶段,在架构设计之前,就开始考虑安全问题,并且他们也尤其关注该问题。我们公司与典型的大型软甲厂商比如SAP,思科的接触合作非常密切,Synopsys的整体解决方案软件研发的一个流程,需要同时与大家确认,并且需要将流程提前,因为时间越晚,耗费的人力和时间成本越高。同时你刚才问到的问题,我们需要花多少的时间成本?不同的团队是不一样的,高精尖企业的团队研发素质高,只需要稍加点拨就有可能将事情完美完成;如果是起步较低的企业,那么他需要去进行较多的内容更改,甚至有可能整个架构的推倒重来,这种状况其实也是我们市场中经常碰到的,但是好在团队是资深的,信息安全从业人员也能够做到这样的目标,并且我们也非常擅长做这类事情。
韩葆: 其实Coverity是我们产品线的一个工具,也属于较为核心和重要的工具,Coverity从成立之初,我们便不断地做调研,不断地发展,迄今为止,我们已申请16+项专利,而且还在持续地申请中。我们团队每三个月发布一个小版本,每六个月发布一个大版本,核心团队设立于硅谷,同时我们在武汉设立了研发中心,满足国内的本地化的需求,该研发中心,不仅仅覆盖到Coverity,也包括Defensics.。Coverity现已支持多种语言。以前,我们可能都没有考虑过Object C、JavaScript、 Node JS前端语言,以及Swift语言,这些语言都是新兴的,那么Coverity的优点是什么呢?我们的检测引擎极为先进,对于不同的语言产生不同的适应性,并且做出相应的调整,比如说后端可能存在些问题,但前端并不会体现出来,在这种情况下,研发团队就需要不断地进行测试和研发,这是一个敏捷的开发过程,也一个需要时时沟通的过程。另外关于Coverity,大约有三千到四千个开源的团队在使用我们的Cloud服务,不断地提交新代码、新需求,也包括一些商业客户,比如说BAT、百度、腾讯、阿里巴巴、华为等企业,他们提出需求,我们接收需求并将其放入新产品中,新的Feature中,因此每个版本都可能出现新语言的添加和新规则的添加,也会出现新品牌的适用性和兼容性。在这种情况下,我们较为擅长地使用Coverity,或者Defensics、ProteCode,他们都有相似的流程,并且可以非常完美地与商业客户和开源客户共同完善产品线。
韩葆: 安全漏洞是一个难以界定的话题,因为不同的行业安全漏洞是不一样的,但是我们有CVE,并且与美国国土安全局的漏洞库完全绑定。一旦出现新兴的漏洞,比如说心脏出血漏洞,Coverity可以直接进行代码修改,可立刻取出来进行规则更改并且检测。Defensics自身就可以检测,比如现在新兴的工控安全ISC的 Packge,大多数人都没有关注,但是Defensics的团队关注到了。我们可以直接采用该新功能,如果大家想要去做ISC的验证、或者工控协议的认证、安全的认证,可以直接使用 Defensics覆盖。这是一些新兴的需求,但是我们的团队成员都有着资深的能力,所以我们也会带来一些新漏洞的爆发点和一些新的方法论,放入产品线里与大家共享。
韩葆: 我是个不断寻求挑战的人,我认为,每一个人要有自己的目标,并且去实现它。可能在这个过程之中,为了实现自己个人的成功,我需要在这一条路上不断的挑战,但是我并不后悔,并且我也成功实现了整个人生,无论是知识、交际,或者是关系上都是一个非常好的成长机会。包括我在SUN的工作,包括我后来技术性上的研究,包括到现在做SIG的业务负责人和技术发言人,我都发现大家的需求其实都是明确的,软件安全是个很大的趋势,大家都在思考,也在不断接受的一个趋势。这个行业以前没有被关注,但现在成为很热点的行业,我相信以后也会有更多的人员加入进来,我的联系方式都是公开的,欢迎大家和我交流这个行业,我是非常乐于与大家去共享这些信息的,读万卷书,行万里路,交更多的朋友,沟通更多的人,是我的梦想。
14. 所以说您接下来会一直在软件安全领域?
韩葆: 是的,我会在这个领域。
15.
韩葆: 谢谢大家。
来源: http://www.tuicool.com/articles/Ff6raiy