软件供应链攻击正成为一种常见的非法获取商业信息的犯罪形式。有研究数据显示,现代软件系统的底层代码中超过90%都是开源的,这意味着几乎所有软件的研发与应用都存在着一条供应链,包括各种组件的引用,以及在软件设计、开发、测试、部署和维护期间所涉及的各种环节,安全漏洞随时可能出现。
由于在企业软件供应链中可能导致安全风险的因素非常复杂,因此保障软件供应链安全并非纯粹的技术性问题,而是要综合考虑人、流程和知识的问题。企业组织在解决软件供应链安全问题时,需要基于软件应用的全生命周期来考虑,监控和保护其中的每个环节。
近日,《福布斯》杂志技术委员会的多位安全专家就现代企业组织如何构建安全软件供应链进行了研讨,并给出了12条加强软件应用安全的实用建议。
建议1制定供应链安全计划,由CISO负责
保障软件供应链安全不只是某个部门的事,而是需要成为企业整体发展战略计划的一部分,并让左右人都能理解这样做的原因。为了确保软件供应链顺畅平稳运行,组织首先要做的一件事就是制定一项严密的安全防护计划,并聘请专职的首席安全官(CISO)来制定和落地这项计划,而不是只是将计划发布出来而已。
建议2确保供应链的可观察性
很多企业长期以来只关注自身网络安全的防护,而忽略了供应商产品的安全状况,导致未经过严格安全认证与审核的访问进入企业,带来巨大风险。确保供应链的可观察性必不可少,软件供应链天然具有复杂性,只有通过持续的监控分析,企业才能保证它们的安全进化和发展,并确保长期可用性和安全性。
建议3部署软件供应链管理系统
大多数企业对开发人员在研发时的开源代码引用和软件依赖关系缺乏足够了解。如果不能有效清点软件中的所有第三方组件,当严重的零日漏洞突然发生时,组织将无法了解自己是否会受到影响,哪些应用会受到影响,以及影响的严重性如何。如果组织部署了软件供应链管理系统,就能够准确判断威胁态势,并立即开始补救,避免安全事件发生。
建议4基于SBOM制定分类计划
软件材料清单(SBOM)最近备受行业关注,但应用SBOM只是基础,目的是可以了解软件产品的各个组成部分。更关键的是,企业应该基于已发现漏洞情报信息进行威胁分析,对识别出的各种威胁进行分类,并以此创建威胁处置流程。通过不断重复上述工作,企业还可以不断完善威胁处置流程。
建议5运用零信任策略
企业组织在构建安全软件供应链时,积极运用零信任策略是一项非常实用的保障措施。在供应链合作中,通过遵循零信任原则,企业可以更好审核供应链服务的安全性,所有对于系统的访问都会建立在身份、端点、服务等一系列角色基础上,必须得到安全策略一致的验证和授权之后才能进行。
建议6将安全检查融入开发流程
企业应重视开发安全运营(DevSecOps)。一种方法是将安全检查工作列为开发人员必须完成的任务之一。无论是软件设计过程中的威胁建模、错误修复,还是封堵代码中的安全漏洞,应用安全问题都需要被开发人员优先考虑,并成为其日常开发工作的一部分。如果这部分工作要求没有完成,就意味着其整个开发工作不能结项。
建议7及时进行补丁更新
及时进行安全补丁和软件版本更新是构建安全软件供应链的重要步骤。为了保证第三方软件及开发者值得信赖,在部署安全补丁和版本升级之前,还需要有适当的措施来对其进行安全审查和监控。
建议8贯彻安全编程和测试实践
企业在构建安全软件供应链时应该贯彻安全编程和测试实践,因为它有助于在开发过程的早期阶段识别和缓解安全漏洞,保护整个软件系统免受攻击。这一点很重要,因为软件供应链往往涉及多个第三方合作伙伴,所有开发团队及人员均应该保持一直的安全编程要求。
建议9定期进行离线代码备份
科学的备份机制是防止数据窃取和勒索攻击的最后一条防线。如果企业大量应用了云计算技术,定期进行离线代码备份工作将非常重要。企业应该定期审查软件服务提供商,尤其是提供关键应用组件、销售系统、财务系统的提供商。一旦发现存在风险,就应该及时手动执行离线的数据备份或数据恢复。
建议10制作一份检查清单
企业了解软件供应链是否安全的最好方法就是制作一份检查清单,并以此进行安全状态检查。检查清单可以让每个人都成为安全把关员,从而打造一条安全的软件供应链。不同类型企业对供应链安全检查的要求会有差异,但清单通常应包括以下8个检查点:访问控制、安全存储、加密、安全传输、漏洞管理、定期更新、跟踪系统和纠正措施。
建议11应用安全协作平台
软件系统的安全性取决于其生命周期中的最薄弱环节。随着现代软件供应链的全球化趋势发展,跨不同平台和多个数据集进行协作开发的需求急剧加大。虽然许多企业组织已采用了基于云的协作开发平台,但目前软件供应链上协同沟通的最常见方式还通过邮件、电子表格和社交工具。企业应该购置统一的安全开发协作平台来降低隐患。
建议12加强工程师的安全教育
保障数字化业务的安全开展已经得到业界普遍认同,企业组织也正在投入很多资源打造安全的软件供应链,并取得了一定的进展,但人依然是整个软件供应链中最薄弱的因素。因此,企业需要加强内、外部软件工程师的安全意识教育,帮助他们提高对新工具、新技术和新威胁的认识。