<p>软件的安全性取决于系统中生产和交付工作代码的最薄弱环节。当前,软件生态系统日益复杂。</p><h3><font color="#c24f4a">什么是软件供应链安全?</font></h3><p>软件供应链安全是指管理开发和运行现代软件应用程序所需的流程、组件和工具中产生的安全风险。网络攻击者可以通过供应链获取关键信息,也可以在供应链内进行恶意活动。</p><p>如今,开发者将他们的应用程序构建为微服务的集合,通常使用开源组件来提供所需的功能,并加快软件发布速度。然后,这些应用程序被部署在虚拟化的基础设施上,比如托管在云中的容器。</p><h3><font color="#c24f4a">软件供应链漏洞的后果</font></h3><p>软件供应链漏洞有可能影响成千上万的组织,这些组织依赖于在其软件生态系统中发挥作用的易受攻击组件。这些风险包括加密敏感数据的大规模勒索软件攻击等。</p><p>当供应链漏洞仅影响单个组织时,恶意软件、后门或其他恶意代码会进入软件环境。糟糕的情况下,关键系统下线,客户损失资金,敏感数据丢失导致监管处罚等。</p><h3><font color="#c24f4a">10大常见软件供应链安全风险因素</font></h3><h3><font color="#c24f4a">1. 代码中的漏洞</font></h3><p>重要的是不要忘记,供应链的定义包括开发人员为构建应用程序而编写的代码。代码作为软件供应链中最基础的部分,在开发软件期间可以通过<a href="https://www.woocoom.com/" target="_blank">静态测试</a>查找代码中的缺陷及安全漏洞,从源头提高应用软件的安全性。</p><h3><font color="#c24f4a">2. 第三方依赖</font></h3><p>第三方供应商、合作伙伴和服务提供商都在现代软件生态系统中发挥着重要作用。无论是通过在云实例上运行应用程序,购买商业库/框架,还是使用服务来简化软件可用性,这些依赖关系都会使企业代码面临可能的风险源。</p><p>第三方风险管理规则对于全面了解依赖项(包括特定第三方对代码的访问权限)至关重要。</p><h3><font color="#c24f4a">3. 应用市场</font></h3><p>除了代码存储库之外,各种面向公众的应用市场还可以轻松下载新版本的应用程序和服务。黑客可能会破坏这些系统并安装后门,从而进入软件环境。</p><h3><font color="#c24f4a">4. 公共存储库</font></h3><p>据估计,自由和开源代码占现代软件的70-90%。公共存储库将各种开源项目的代码提供给互联网上的每个人,但它们也带来了重大的软件供应链风险。</p><h3><font color="#c24f4a">5. 构建系统</font></h3><p>现代软件开发工作流程使用持续集成和持续交付来实现自动化并提高效率。CI/CD管道的核心是代码储存库、容器和构建服务器,这些都有可能遭到入侵。常见的构建工具包括Buddy,Jenkins和Bitbucket。</p><h3><font color="#c24f4a">6. 劫持更新</font></h3><p>近年来,被劫持的更新在有关网络安全的新闻报道中屡见不鲜。当代码及其基础结构依赖于有时需要更新的其他工具时,这些被劫持的更新会带来软件供应链风险。这里的重点不是避免应用软件更新;更重要的是认识到这种风险,并对那些工具和应用程序在软件供应链中发挥作用的供应商进行尽职调查。</p><h3><font color="#c24f4a">7. 破坏代码签名</font></h3><p>只使用签名代码是一种不错的安全实践,因为它使用数字签名来确认代码的真实性。但代码签名的有效性取决于它的实现。代码签名可能会被窃取的数字证书私钥或使用过期/撤销的证书所破坏。虽然可以采取缓解措施(保护硬件安全模块中的私钥,验证证书),但要注意易受攻击的代码即使经过签名也仍然是易受攻击的。</p><h3><font color="#c24f4a">8. 获取整个供应链中的资源</font></h3><p>对整个供应链资源的过度访问通常会使软件安全事件更加严重。开发人员工具、存储库、云系统和软件开发中涉及的其他工具都应该严格控制其访问权限。理想情况下,在整个供应链中实现最小权限原则,以确保每个组件和人员仅拥有软件正常运行所需的必要访问权限。</p><h3><font color="#c24f4a">9. 连接的设备</font></h3><p>终端笔记本电脑和工作站等连接设备也涉及软件供应链。安全加固是加强连接设备和代码抵御常见危害的复原能力的关键方法。有效的防御措施包括加密、数据丢失保护、高级端点检测和响应以及标准的防病毒扫描程序。</p><h3><font color="#c24f4a">10. 供应商和业务合作伙伴</font></h3><p>供应商和业务合作伙伴是软件供应链风险的来源,因为他们会提供企业所使用或协作的应用程序服务。为了降低这些风险,从源代码开始,检测依赖关系的安全性,同时不要进行第三方风险评估和验证。</p><p>为了防止出现代价高昂的安全事件,软件供应链安全需要一种全面的方法来解决链中所有可能的薄弱环节,从开发人员编写的代码到企业所使用的工具以及合作的第三方软件供应商,都应该谨慎审查其安全性,并做好应急预案,同时开发人员不能忽视他们在加强软件安全性方面的作用。</p><p>关键词:软件供应链安全 代码安全 安全漏洞 第三方软件安全</p>