近期,某出行服务巨头事件引发了各方热议。该企业于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能力域。而ISO/IEC 27001:2013,则从组织的整体业务风险的角度,基于PDCA持续改进的框架,为建立、实施、运行、监视、评审、保持和改进文件化的ISMS规定了要求。与软件系统安全开发相关的主要涉及A14信息系统获取、开发和维护,A10 密码学,A9 访问控制,A16 信息安全事件管理,A17等多个控制域,同时,如果存在系统外包开发,还会涉及A15供应商管理。
要求目标和方向框架确定,并取得高层领导支持,就该开始撸起袖子加油干了。通过现状调查和差距分析,并针对性选用安全专项活动和对应的工具方法,逐步融入并优化已有开发流程。
在研发开发流程中嵌入Security、Safety以及隐私保护的要求时,网络安全、功能安全、隐私保护,应该纳入到OEM、Tier1的研发流程中去,具体包括:
产品定义阶段:系统性规划安全、隐私、韧性等相关的需求与特性,并导入到设计环节进行落地;
产品实现阶段:分别在编码、构建、测试、发布环节采取针对性的策略与措施,将安全能力进行固化,确保来源可信、编码可信、构建可信、测试安全;
使用阶段:在部署与运维环节,通过软件完整性保护、漏洞管理、隐私保护等措施确保使用部署与运维的安全;