对于大部分企业来说,安全依然是在软件开发完成之后的附加功能。然而,如果这样做,将会在软件开发完成后带来各种的安全更新,产品下线,甚至漏洞无法修补等问题。那么,如果将安全贯穿整个软件开发生命周期会如何呢?业界中,为了帮助企业更好地进行安全的软件开发周期,发布了各种模型来帮助企业更安全地开发软件,比如OpenSAMM、Microsoft SDL等。然而,这些模型的特点在于他们都属于指导性模型——是告诉企业该怎么做的。但是,我们都知道,仅仅有地图,但是不知道我们身在何处,就很有可能会迷路,那是否能有一个告诉企业,他们现在的安全策略、软件开发的安全能力如何的模型呢?

近日,新思科技(Synopsys)的管理顾问Olli Jarva在北京进行了一次媒体沟通会,向媒体分享了他们的解决方案。

安全软件开发的GPS导航模型——BSIMM

新思科技的软件安全构建成熟度模型(Building Security in Maturity Model, BSIMM)就是一个描述性的模型——帮助企业规划、执行并评估其安全计划。如今的BSIMM已经是第八个版本——BSIMM8。BSIMM8收集了来自109家全球大型公司的数据,根据4.769名软件安全专家的工作成果,为企业制定了4个领域(治理、情报、触点、部署),12个方面以及113项活动,对企业的各个方面进行评估——包括代码检查、安全测试、员工安全意识等各个方面。

在BSIMM评估完毕后,会给企业一个评估报告——报告中包括了企业在各个活动中的评分以及其他企业的平均表现。BSIMM会提供一个主网图,展示出企业在十二个方面的情况,让企业对自身哪些方面做得好,哪些方面尚且不足有更直观的了解。而在详细报告中,BSIMM则对总共113项活动对企业情况分别打分,让企业更明白自己具体在每个方方面面做得如何。

然而,仅仅让企业了解到自己在安全软件开发流程中的位置是不够的。安全开发对技术所有企业都是一项非常艰巨的任务,因为安全很有可能会限制住开发的速度,改变开发者的很多行为习惯。因此,新思科技意识到,很多问题是整个行业里各个公司都共有的,如果能让企业明白自己在整个行业里的情况,会对企业的安全策略改进有所帮助。因此,BSIMM的报告中不仅会提供企业自身的情况,也会提供同行业内其他公司的平均水平,供企业进行对比,发现自己和同行差距的同时,了解到整个行业是如何采取安全措施的。

所以,BSIMM不仅仅作为企业安全的GPS,帮助企业找到自己在安全开发模型中的位置,更能帮助企业在整个行业的安全实践中找到位置。另一方面,在企业完成评估后,新思科技也会根据BSIMM的评估报告,为企业在更好的安全策略计划方面,进行一些帮助——不仅仅是在地图上标示出方位,更是引导企业走上正确的路线。

随着技术的不断发展,安全技术、安全能力和安全理念也是不断改变。BSIMM也进化到了第八个版本。BSIMM的进化也并非是新思科技拍脑袋的改变。BSIMM的社群体系,将BSIMM的客户聚集到一起,在提供给客户行业平均水平的同时,BSIMM也能发现行业中新的安全需求和安全问题,并且随之更新。因此,正如安全自身一样,安全模型也不会是一成不变的——能适应最新道路状况的GPS才是好的GPS,能不断更新的安全模型才能真正满足企业的安全需求。

华为的BSIMM体验

BSIMM已经在全球146家企业进行了321次评估,一家公司甚至已经进行了5次评估,其中,大部分公司来自于北美;然而,国内企业也逐渐使用BSIMM的评估来帮助自己进行更好的安全开发,华为就是之一。在这次交流会上,华为的网络安全与用户隐私业务管理部安全设计主管杨光磊也分享了华为的BSIMM使用体验。

华为自2010年起参考指导性的安全模型,但是在实践过程中发现这些评估和模型缺乏与业界其他公司的对比,无法衡量华为软件开发中的安全能力在业界的水平情况。因此,华为为了更好地了解自己的情况,与业界对比进行改进,选择了BSIMM的评估。

华为在2013年首次进行了BSIMM评估,每轮评估大概2到3个月。新思科技对华为进行了各位采访以及活动培训,对华为的软件开发流程的安全情况进行了评估报告。在报告后,BSIMM对华为的安全策略也进行了相对的帮助建议,华为在多个领域得到了提升。

首先,华为的安全培训缺乏体系,无法形成课程,而在评估后,华为开始有计划地参照业界开展安全活动,安全教育。其次,华为参考了业界实践,建立了SDP Track平台,对产品安全开发流程中的各个活动进行管理,跟踪和了解各个安全活动的数据和助航太。最后,之前的华为尽管也进行代码检视,但是在检视中使用的却是统一规则;而在评估后,华为对不同产品的代码检测进行量身定制并且和自动化工具结合,发现了一些之前没有发现的问题。

安全应该内置(build-in)而非附加(add-on)

BSIMM的评估体现的理念是安全应该内置于软件开发周期,而非在软件开发完成之后的附加功能。然而。受制于传统理念,大部分公司依然无法理解到这一思想。而另一方面,即使有些企业能了解到这一思想,但是却会因为各种原因无法采用:比如管理或者开发者难以接受,比如流程难以变更,又或者相关人员的安全能力不够。针对这些问题,Olli Jarva和杨光磊也发表了自己的看法。

Olli Jarva提到,企业要首先理解到,安全如果作为软件的附加,最大的问题就是公司的成本代价。Olli Jarva举了个例子,软件开发就像造汽车一样。一旦没有将安全放在机车制造的流程中,那么一旦汽车出厂后发现了安全问题,汽车就需要被大规模召回,企业就要蒙受经济损失以及名誉损失。软件也是同样的道理。尽管软件一旦出现安全问题,未必会像汽车那样对人有直接的生命威胁,但是,事后的安全更新依然会消耗开发者大量的时间。补丁自身也有可能因为与软件中其他部分矛盾而产生新的问题。客户一旦受到安全攻击,也引发大量的经济损失,无论是对客户还是企业本身都有非常大的名誉损害。

 杨光磊也分享了华为转变的经验。杨光磊提到,华为首先做到的是自上而下的安全的改变——董事会牵头组建网络安全委员会,引起整个企业的重视。在华为自上而下对安全进行整治以后,整个企业对安全的执行力增强了,安全政策可以真正落实到开发过程中。由于大部分开发者考虑到的是功能的实现,而非安全的保障,因此,华为将安全的考核加入到了业务KPI的考核当中——一旦安全出现问题,相关人员的KPI业绩也会受到影响。这样一来,在软件开发周期中,由于安全和KPI挂钩,相关人员会真正重视安全。另外,安全也确实会影响开发,使没有安全经验的开发者在软件开发的时候感到不适应;因而,华为在采取安全开发策略以及安全开发工具的时候也考虑到了这点,采用了尽量不会影响开发流程流畅度以及不会给开发者增加额外负担的方式。最后,杨光磊也提到,仅仅在工具和政策上要求员工是不够的,华为也会定期为员工进行安全培训以及安全意识的宣传。

安全牛评

对于软件开发公司而言,需要逐渐将安全从附加属性转变为内置属性——安全应该是软件的必备功能之一,而非一个加分项。这样做的前提就是要在整个软件开发流程中确保安全。在企业向安全软件开发周期转型的过程中,不仅仅需要指导性的模型来确保自己的目标,也需要BSIMM这样的描述性模型去确认自己在安全中的方位以及自己前进的方向是否正确。

声明:本文来自安全牛,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。