首页 >新闻资讯>公司动态

利用成都CMMI认证和ISO27001建设软件安全开发流程,提升软件工程能力

2021-07-28 15:01:37  成都远望咨询  2981

       “如何结合成都CMMI认证和ISO27001的要求,来建设软件安全开发流程,并提升相应的软件工程能力是一个比较新的话题,现在给大家分享了关于软件安全开发,行业内的一些可参考模型和优秀实践,对许多组织有很好的借鉴价值。”
近期,某出行服务巨头事件引发了各方热议。该企业于2021年7月1日凌晨在美国低调上市,上市第二天,国家网信办网络安全审查办公室发布公告,对其出行App实施网络安全审查,审查期间停止新用户注册。两日后,因存在严重违法违规收集使用个人信息问题,其出行App又在应用商店被下架。随后一周内,依据《中华人民共和国网络安全法》,公司旗下共计25款App也相继被下架。
      让我们把时间线稍微拉长点看就不难发现,最近几年,随着《中华人民共和国网络安全法》、《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《网络安全等级保护基本要求》等系列法律法规的相继出台,网络安全已上升到了国家安全的角度,这也对现有的软件企业交付(含出海交付)带来了更多的要求和挑战。
      比如,一些公司最近几年都要参加国家级的网络安全攻防演练(代号HVV行动)。除了这种针对内部系统的安全整改和攻防对抗要求,国内外的用户对于软件安全交付也有着越来越高的要求,如:“系统安全等级需要达到国家等保二级/三级要求”,“上线前要有第三方的渗透测试报告”,“按照ISO27001信息安全管理体系要求进行建设”等等。
      我想根据个人经验从质量流程的视角和大家探讨下:针对国内和国际上对于网络信息安全方面的要求,如何结合CMMI和ISO27001的要求,来建设软件安全开发流程,并提升相应的软件工程能力?
      首先,我们需要先了解下CMMI和ISO27001对于软件安全开发的要求。
      最近发布的CMMI2.2里,最重要的security内容是两个实践域:Enabling Security(ESEC)、Managing Security Threats & Vulnerabilities(MST), 它们都属于ManagingSecurity and Safety能力域。几个实践域的核心内容,包括PA的价值、意图、实践。

      而ISO/IEC 27001:2013,则从组织的整体业务风险的角度,基于PDCA持续改进的框架,为建立、实施、运行、监视、评审、保持和改进文件化的ISMS规定了要求。与软件系统安全开发相关的主要涉及A14信息系统获取、开发和维护,A10 密码学,A9 访问控制,A16 信息安全事件管理,A17等多个控制域,同时,如果存在系统外包开发,还会涉及A15供应商管理。


ISO2001体系整体框架图

ISO27001体系整体框架图


      了解了两大体系要求后,我们再看看如何搭建流程框架并开展工作。
       如果一个组织已经通过CMMI认证,现在要过ISO27001,一定重建一份体系制度文档吗?答案是否定的。
       我非常认可丛博CMMI改进、评估的观点,“价值驱动”,“do more with less”。质量体系建设要围绕业务价值,更多投入有价值的活动,起到切实改进的作用, 而不是单纯的套体系套框架拿证书。
       基于这个共识,根据内外部客户对于信息安全的需求以及企业的安全方针,结合公司的实际情况,完全可以将其对软件开发要求自然融入到现有的CMMI体系框架中。
       “安全是质量属性的一部分”,将安全融入到质量管理是构建软件安全开发流程的基本条件。需要Security Built In的整体解决方案:通过在软件开发生命周期各阶段采取必要的、相适应的安全措施来避免绝大多数的安全漏洞,以交付符合安全要求的系统。
       要求目标和方向框架确定,并取得高层领导支持,就该开始撸起袖子加油干了。通过现状调查和差距分析,并针对性选用安全专项活动和对应的工具方法,逐步融入并优化已有开发流程。
       这里和大家分享下关于软件安全开发,行业内的一些可参考模型和优秀实践,大家可以根据公司实际情况参考选用。
1.微软的 SDL(Microsoft Security Development Lifecycle)
       从20 世纪 90 年代开始,微软经历了一系列影响重大的恶意软件事件(俗称 “树大招风”,迄今为止针对WIN操作系统和微软各类办公软件的攻击也是最多的)。这种安全形势促使微软重新考虑软件安全开发过程和策略,并提出了Microsoft Security Development Lifecycle(安全开发生命周期),从安全角度指导软件开发过程的管理模式。
如下图所示,微软把软件安全开发生命阶段,划分为5+2个阶段和16项必需的安全活动。
      同时,作为行业大拿,微软还非常贴心的提供了各类模板和工具,如:SDL过程模板和MSF-Aglie+SDL过程模板,SDL威胁建模工具,SiteLock ATL模板、FxCop、C/C++源代码分析工具、MiniFuzz、SDL Regex Fuzzer、AppVerifier。有兴趣的同学欢迎进微软官网研究。(更多内容可见微软官网 https://www.microsoft.com/en-us/securityengineering/sdl/)
2. 软件安全构建成熟度模型BSIMM(Building Security In Maturity Mode)
      BSIMM 是对现实世界中软件安全方案(SSI – Software SecurityInitiative)开展多年研究的结果,基于从 130 家企业中观察到的数据直接构建而成。目前已经迭代到BSIMM11版本,它由包含了 121 项安全活动的软件安全框架组成。该框架包含 12  项实践, 分别纳入4 大 领域中。SSF(Software Security Framework)
BSIMM区域和实践

      相比微软的SDL , BSIMM更类似于业界公司的优秀实践合集,也可用作 SSI 路线图。先确定自己公司的目标和行为,然后参考BSIMM 来选取对公司最有意义和价值的活动。




3.  OWASPSAMM(Software Assurance-Maturity Model)
       OWASP-SAMM是一个OWASP框架,用于帮助组织评估、制定和实施软件安全策略,该策略可以集成到现有的软件开发生命周期(SDLC)中。OWASP SAMM适用于瀑布、敏捷或devops方法。SAMM基于大约15个安全实践,分为5个业务功能。每个安全实践都包含一组活动,分为3个成熟度级别。
      OWASP(开放式web应用程序安全项目)这个项目最有名和应用最广的,应该是"OWASP Top 10"。这个列表每隔几年会进行更新,不但总结了WEB应用程序最可能、最常见、最危险的十大安全隐患,还包括了如何消除这些隐患的建议。OWASP还有一些辅助项目和指南来帮助IT公司和开发团队来规范应用程序开发流程和测试流程,提高WEB产品的安全性。顺便说一句,这个TOP 10很适合于给研发人员进行安全培训,以及进行代码安全静态扫描。
在研发开发流程中嵌入Security、Safety以及隐私保护的要求时,网络安全、功能安全、隐私保护,应该纳入到OEM、Tier1的研发流程中去,具体包括:
      产品定义阶段:系统性规划安全、隐私、韧性等相关的需求与特性,并导入到设计环节进行落地;
      产品实现阶段:分别在编码、构建、测试、发布环节采取针对性的策略与措施,将安全能力进行固化,确保来源可信、编码可信、构建可信、测试安全;
使用阶段:在部署与运维环节,通过软件完整性保护、漏洞管理、隐私保护等措施确保使用部署与运维的安全;
我的几点体会:
      1. 流程制定不要做成两张皮:说到做到,知行合一
      2. 注重对全员的安全意识培训
      3. 流程和先进工具的有机集合,能有效提升工程能力。
4. 在整个软件开发生命周期中要确保将安全作为软件的一个有机组成部分,贯穿产品定义、需求、设计、开发、测试、发布、运维全过程。
      5. 软件安全是以风险管理为基础:安全不必是完美无缺,但风险必须是能够管理的。
      6. 最适宜的软件安全策略就是最优的风险管理对策。这是一个在有限资源前提下的最优选择问题。
:初创企业为何更需要进行成都ISO认证9001质量体系认证? :成都高新区ISO45001认证补贴政策来啦!! 返回列表

在线咨询
张老师:593024211
联系电话

400-028-9829

扫描二维码关注公众号