产品展示
前沿 我国软件安全开发体系建设的观察与研究
《中国信息安全》杂志,介绍国内外最新网络安全动态,深度解读网络安全事件。
软件安全开发已经成为确保企业信息系统可靠性、保护用户隐私、满足合规要求以及防御网络攻击的关键措施。尽管软件安全开发在网络空间治理中的重要性已被广泛认可,但企业在实施过程中仍会面临诸多困难。其中,法律法规在软件安全上的转化、团队成员缺乏足够的安全意识、专业人才紧缺,以及软件安全需求的迅速变化等都是当前企业软件安全开发面临的挑战。为了有效应对这些挑战,企业必须设定全面的软件安全开发体系建设的目标,并从流程、制度、文化及工具等多方面着手,综合提升开发组织的安全意识和应对能力,从而确保信息系统的安全性和可靠性。
根据 IDC 数据显示,“2021 年中国网络安全相关支出为 122.0 亿美元左右。初步统计,2022年中国网络安全相关支出为 137.6 亿美元;预计到 2026 年,中国网络安全支出规模将达 318.0 亿美元。随着软件漏洞被黑客攻击和数据泄露等威胁不断加剧,企业和政府对软件安全开发的需求愈发迫切。
当前,我国企业对于软件安全开发的需求主要源于相关法律法规的要求。《网络安全法》和《个人信息保护法》中关于个人信息处理的规则,以及《数据安全法》中关于数据处理活动违规的法律责任,都是对软件具体业务实现的明确要求;《工业和信息化领域数据安全管理办法》中对数据分级分类以及对数据生命周期提出了明确的管理要求,并对数据的监督管理和相关人员的职责做了定义;《关键信息基础设施安全保护条例》中明确了对关键信息系统或软件安全管理制度和流程的要求,强调了风险评估、人员岗位、应急预案、培训等安全活动的建设;《网络数据安全管理条例》中对于个人信息保护的方法做出了具体指导,软件开发组织可对要求进行直接的安全需求转化等等。
目前,市场上主要的软件安全活动包括软件渗透测试、代码扫描和数据加密等技术手段。然而,安全团队往往难以评估这些工具的效果及软件开发流程的可靠性。因此,软件开发团队还需要加强开发流程和制度的安全建设,确保软件安全活动的有效实施。当前,业界广泛认可的软件安全开发体系是 2004 年微软公司提出的安全开发生命周期(SDL)模型,它涵盖并说明了流程建设、需求分析、设计、编码和测试、部署和维护等各个阶段的安全活动,并将安全性视为整个软件开发过程的核心。企业需要对员工进行全面的安全培训,以确保达成预期的安全效果。其目的是在软件开发过程的每个环节中,通过组织管理和安全活动前置的方式,将安全理念及相关技术融入其中。
目前,软件安全开发体系建设的概念在市场中的认知还不是很成熟,企业在实施软件安全建设时,往往会寻求专业咨询公司的协助,企业对软件安全的需求相对分散,涉及软件法规合规性、用户隐私、数据安全、可用性、供应链安全等各方面,而不同行业的信息系统部门在软件安全开发上的关注点也各有侧重。
在关键信息基础设施领域,对于软件安全的要求不仅包括强调身份验证和访问控制、数据传输加解密、网络安全、数据的保密性和完整性等,还扩展到对软件供应链的审查监管、应急响应流程及恢复计划以及行业相关标准遵循等。新能源汽车行业的软件系统涉及车辆控制系统、电池管理系统、自动驾驶辅助系统、能量回收管理系统、车联网系统以及车载信息娱乐系统等众多复杂功能。这些系统存在大量潜在的软件漏洞,可能暴露包括车辆信息、定位数据、驾驶习惯等在内的个人敏感信息,从而容易成为黑客攻击的目标。金融证券行业对合规性有着极为严格的规定,因此,在该行业中构建软件安全开发体系时,需要更加注重软件系统的合规性,这涉及软件源代码扫描、用户隐私数据保护等方面,以确保符合国家金融监督管理总局等相关监管机构的要求。鉴于金融证券相关机构通常处理大量的交易数据和客户敏感信息,需要充分识别并考虑到数据的机密性、完整性和可用性。互联网行业公司通常采用敏捷开发和 DevOps 实践,以实现软件开发过程更加灵活性、高效性和安全性,这就要求企业在快速迭代、频繁发布和自动化测试的同时,能够平衡市场业务需求的快速变化的与安全开发之间的关系,确保两者的效率兼顾。
总体而言,不同行业对软件安全开发体系存在一定的个性化需求。通常在进行软件安全开发体系建设之前,企业应当进行一次系统性的差距分析(Gap Analysis),以全面客观地评估比较企业软件安全开发能力与行业最佳实践的差距,从而为软件开发组织提供参考。差距分析不仅有助于发现存在的问题和薄弱环节,还能够为后续的软件安全开发体系建设提供明确的方向和具体的改进方案,让软件开发组织能够更明晰地了解哪些方面需要重点提升。
企业常常采用差距分析来衡量自身在运营流程、质量标准和合规制度等方面与行业最佳实践之间的差距。特别是在软件安全开发领域,差距分析侧重于分析企业的软件安全开发体系能力与行业最佳实践水平之间的差异。通过这种分析,企业能够获得清晰的发展指引和量化参考指标,从而有效地构建和提升其软件安全开发体系。
通常情况下,软件开发组织在着手进行软件安全开发治理活动之前,需要先进行差距分析。这一过程对构建软件安全开发体系至关重要,主要具有三个主要作用:一是使软件安全开发体系建设计划更具针对性。基于差距分析的结果,软件开发组织可以根据当前软件安全投入的资源大小,制定有合理针对性地改进计划,以便软件安全开发项目落地。二是能够帮助企业及时地纠正软件安全开发过程改进的方向。差距分析并不是一次性的活动,而是需要在整个软件生命周期中持续进行的,不断优化其软件开发实践,适应新兴威胁和技术挑战。三是可以帮助组织统一安全目标和认知。在进行差距分析的过程中,开发团队的软件安全的认知可以得到强化,每个团队成员都能够了解什么是软件安全的最佳实践,从而达到提高开发团队各成员安全意识的目的。同时,差距分析的过程中可以促进开发团队建立软件安全开发的文化共识,了解软件安全开发体系建设的必要性。
差距分析之于软件开发流程,就如同定期进行身体检查对于维护个人健康一样不可或缺。我们不能等到发现软件安全漏洞之后才亡羊补牢,而是需要经常性地检查当前开发流程是否安全健康,从日常管理中持续监控和识别开发过程中发现可能存在的流程、制度、工具等方面的风险。为了能系统地评估当前软件开发组织的安全活动与行业最佳实践活动的差异,有经验的开发组织通常可以在差距分析时会使用一套评估模型作为参考。
目前,中国软件行业比较熟知的两个软件安全能力成熟度模型是国际上的 BSIMM 和 SAMM,前者专注于评估组织建立的整体软件安全实践,后者专注于评估软件过程质量保障实践。随着信息系统国产化的趋势,我国也逐步建立起一系列国家标准和行业标准,如《军用软件能力成熟度模型》(GJB5000)《开发运维一体化能力成熟度模型》(GB/T 42560-2023)《软件安全开发能力评估技术规范》(T/ISC 0042—2024)和《软件供应链安全要求》(T/ISC0044-2024)等。基于这些标准,开源网安提出了自己的 S-SDLC CMM 模型作为标准执行框架,遵循市场普遍认可的分级政策,将软件开发能力成熟度分为五个等级:第一级为无组织无定义;第二级为可重复经验和部分管理;第三级为正式的标准化管理流程;第四级为有定量分析管理过程;第五级为开发团队能持续改进整个开发过程。S-SDLC CMM 的内容涵盖了软件安全开发能力、软件供应链安全要求以及 DevOps 开发运维一体化的相关标准要求,填补了国产化软件安全开发能力评估框架的空白。企业可通过内部自查或者外部第三方的审查,依照模型指导从合规性、安全需求分析、软件供应链、代码审查、自动化流水线安全控制等方面全面评估软件安全开发能力,识别出软件开发过程中的安全薄弱环节和潜在的漏洞,在软件上线前解决掉大部分常见软件安全问题。
软件安全开发体系建设项目的实施过程往往并非一帆风顺。市场对这一领域的认识水平参差不齐,这常常导致咨询方和项目实施方会出现认知不统一、沟通困难等问题,导致项目相关方配合度不够。虽然很多企业已经意识到了软件安全开发的重要性,但在业务进度的压力下,软件安全的需求常常被妥协忽略,使得项目实施过程中经常出现类似责任推诿的情况,特别是当一个项目组涉及多个部门、供应商的时候,非强制性的咨询项目沟通起来会更加复杂,项目交付的过程中对于评审结果难以达成一致。除了加强培训和相关宣贯工作以外,项目参与人员还需要进行更加精细化的规划,根据项目实际情况来理解相关方最核心的利益诉求。
市场认知程度不高的现象同时也体现在部分咨询公司自身的专业性不够上,软件安全概念常常因为商业推广需要而被混淆,甚至会出现咨询项目实施到后期,客户不清楚项目能达成什么效果的情况。目前市面上能够进行合格的软件安全开发差距分析的公司还不多,能够根据差距分析的结果进行软件安全开发治理咨询的公司更少。有相当一部分咨询公司会将软件安全开发体系建设咨询简化为合规性检测和渗透测试,或者用工具进行自动化扫描及编码规范解读,甚至有的传统网络安全公司承接了软件安全开发业务,依旧开展的是网络硬件设备检测或防火墙配置服务。这些不仅不利于咨询公司普及软件安全的知识,还会让项目在交付的时候出现用户不认可的情况,客户会不断要求项目需求蔓延,咨询公司也疲于解释自己的工作内容。
由于软件安全开发的相关概念是从西方传入我国的,在咨询业务开展的时候,很多咨询公司会参考许多国外优秀案例和经验,往往会忽略客户的实际需求,过度追求大而全的理想化效果。我们常常看到咨询公司在实施项目时,首先会让客户中断正常业务来完成软件安全理论及知识的培训,或者召开非常多的培训会议,导致客户正常业务受阻,而培训的许多内容都是根据国外的经验而定,忽略了客户的业务及开发人员规模,导致很多认知上的矛盾和摩擦。而部分咨询公司的实施人员常常拿着很多舶来知识当作圣经,片面追求理论的正确性,只知其然不知其所以然,很难让客户信服。
软件安全开发若要做得好,关键在于企业首先必须认识到其重要性,企业内部能够自上而下地提出明确软件的安全目标。软件安全质量需要与企业自身质量管理体系相结合,并与相关人员绩效相关联,从而在企业的开发流程控制、政策制度、工具使用、环境建设等多方面得到全面融合。同时,运用自动化和可视化工具不仅提升了安全检测、漏洞扫描和代码审计等具体活动的执行效率,还有效促进了员工对安全流程的认识。通过定期进行差距分析和治理,这些优秀的软件开发团队能够系统性地了解当前软件开发过程中存在的哪些安全能力的不足,并适应新的应用场景下的软件漏洞威胁和技术挑战,满足最新的法规行规要求,持续保障软件系统的安全性和可靠性。