浅谈软件供应链安全治理与应用实践

随着容器、微服务等新技术日新月异,开源软件成为业界主流形态,软件行业快速发展。但同时,软件供应链也越来越趋于复杂化和多样化,软件供应链安全风险不断加剧,针对软件供应链薄弱环节的网络攻击随之增加,软件供应链成为影响软件安全的关键因素之一。近年来,全球针对软件供应链的安全事件频发,影响巨大,软件供应链安全已然成为一个全球性问题。全面、高效地保障软件供应链的安全对于我国软件行业发展、数字化进程推进具有重要意义。

近日,在由中国信通院指导、悬镜安全主办的中国首届DevSecOps敏捷安全大会(DSO 2021)现场,《软件供应链安全白皮书(2021)》(以下简称“白皮书”)正式发布。本白皮书着重分析了软件供应链安全,梳理了软件供应链的安全现状,透过现状全面剖析软件供应链的安全风险及面临的安全挑战,有针对性地提出如何对软件供应链的安全风险进行防范与治理,系统阐述了软件供应链安全的防护体系及软件供应链安全的应用实践以供参考,最后白皮书结合现在软件供应链安全的发展趋势进行了全面的分析及展望。

由于篇幅有限,仅摘选本报告“软件供应链安全治理”及“软件供应链应用实践”两部分进行分享。

 图:《软件供应链安全白皮书》封面

一、软件供应链安全治理

目前,业界已充分认识到造成网络安全事件出现的主要原因之一,是由于软件开发者在开发过程中对开发工具、开发团队、开发生命周期和软件产品自身管理不当,致使软件存在着安全缺陷,破坏或影响最终用户的信息安全。

通过推进针对软件生命周期进行全流程安全管控的落地实践,有助于从软件生命周期的源头保障软件供应链安全。通过建立软件开发过程中保证软件供应链安全的体系化方法,为软件开发过程中尽可能避免和消除软件的安全缺陷、保证软件供应链安全奠定重要基础。

从软件安全开发生命周期角度分析软件供应链安全的应用实践方法,主要有以下几个阶段。

1、体系构建阶段

SDL 软件安全开发生命周期

微软在21世纪初期的软件产品开发实践中,意识到无法通过技术层面彻底解决软件面临的安全风险。因此,微软尝试从流程和管理的角度解决这个问题,并探索在各个软件开发环节中加入安全过程、把控安全风险,确保每个环节交付到下一环节的交付物都安全可控。于是,针对传统的瀑布式模型微软提出了“SDL 软件安全开发生命周期” 这一概念。

软件安全开发生命周期(SDL),是一个在帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。SDL将软件开发生命周期划分为7 个阶段(如图所示),并提出了 17 项重要的安全活动,旨在将安全集成在软件开发的每一个阶段,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。SDL更侧重的是软件开发的安全保障过程,旨在开发出安全的软件产品。

 图 1 SDL 软件安全开发生命周期

在 SDL 的 7 个阶段中(如图 1所示),SDL 要求前 6 个阶段的 16 项安全活动,为开发团队必须完成的安全活动。 同时,SDL 认为开发团队应该保持灵活性,以便选择更多合适的安全活动,如人工代码分析、渗透测试、相似应 用程序的漏洞分析,以确保对某些软件组件进行更高级别的安全分析。SDL 重视各种工具的使用,重心在从需求阶段到测试阶段的工具集,如威胁建模、静态源代码分析等工具。

SDL 的 7 个阶段主要的含义如下:

培训:针对开发团队进行安全意识与能力的培训,以确保 SDL 能有效实施并落地,同时针对新的安全问题与形势 持续提升团队的安全能力;

需求:通过安全需求分析,定义软件产品安全实现过程中所需要的安全标准和相关要求;

设计:通过分析攻击面,设计相对应的功能和策略,降低和减少不必要的安全风险。同时通过威胁建模,分析软 件的安全威胁,提出缓解措施;

实施:按设计要求,实现对应功能和策略,以及缓解措施涉及的安全功能和策略。同时通过安全编码和禁用不安 全的 API,减少实施时导致的安全问题,尽量避免引入编码级的安全漏洞,并通过代码审计等措施来确保安全编码规范的实行;

验证:通过安全测试检测软件的安全漏洞,并全面核查攻击面,各个关键因素上的威胁缓解措施是否得以验证;

发布:建立相应的响应计划,进行最终安全检查,确认所有安全活动均完成后将最终版本发送给客户;

响应:当出现安全事件与漏洞报告时,及时实施应急响应和漏洞修复。在此过程中新发现的问题和安全问题模式,可用于 SDL 的持续改进过程中。

DevSecOps

DevSecOps 是一种全新的安全理念和模式,由 DevOps 的概念延伸和演变而来。其核心理念是安全是整个 IT 团队 每个人的责任,需要贯穿从开发到运营整个业务生命周期每一个环节才能提供有效保障。

DevSecOps 覆盖编码阶段、测试阶段、预发布阶段、发布阶段、线上运营阶段,强调自动化与平台化,由 CI/CD 平台推动整个开发和运营流程自动化。DevSecOps 依赖于 DevOps 流程工具链(如图 2 所示),将威胁建模工具、安全编码工具、安全测试工具、容器安全检测工具、基线加固工具、漏洞管理工具等自动化工具无缝集成到 DevOps 流程中,进而实现开发 - 安全 - 运营一体化。

图 2 DevSecOps 工具链

很多企业在向 DevSecOps 转型时,会发现很多传统的安全工具在集成性和实用性上都难以满足 DevSecOps 的需求, 因此,在 DevSecOps 的不同阶段需要采用不同的 DevSecOps 安全工具(如图 3 所示),这些安全工具主要的共同特点是高度自动化以及可集成性。

图 3 DevSecOps 安全工具在不同阶段的自动化程度

在软件供应链中每个阶段都在面临不同的安全风险,为了更好的对软件供应链进行风险治理,在 DevSecOps 模式 下,安全开发工具链需要尽量覆盖软件生命周期中的所有阶段(如图 4 所示)。

 图 4DevSecOps 模式下软件生命周期

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值