新思科技《2021年开源安全和风险分析》报告(OSSRA)发现开源安全、许可证合规性和维护问题依然很普遍。其中,高达91%的代码存在开源依赖项,这些开源组件在过去两年内没有任何开发活动——没有进行代码改进,也没有任何安全修复。这无疑是一个风险敞口。掌握开源信息,保护供应链安全,才能构建可信软件。
近日,非营利性组织Linux基金会和哈佛创新科学实验室发布了“自由和开放源码软件普查II - 应用库”。这次普查列出了1,000多个最为广泛使用的开源应用库。新思科技网络安全研究中心(CyRC)将自身基于数千家公司代码库的扫描结果数据匿名化后,贡献给了此次普查报告,有助于更全面地了解 FOSS(自由/开源软件,free and open source software)的使用情况。
Linux基金会普查 II (Linux Foundation Census II)检查了最受欢迎的开源应用库,并且罗列了影响这些应用库安全问题的因素。
报告作者指出:“完全理解 FOSS 的健壮性、经济价值和安全性是一件很难的事情,因为它是以去中心化和分布式的方式产生的。”由于软件组件打包方式以及版本分类和识别方式多种多样,因此该报告将它们归纳汇总成8 种Top 500排名。
新思科技软件质量与安全部门安全解决方案经理Mike McGuire将软件包和版本比作汽车的型号、生产年份和配置。他说:“如果我只说我开一辆丰田凯美瑞汽车,但你仍可能不会知道我开的是哪一款车。1999年版本,还是2022年版本?在订购零部件、获得服务、跟踪召回等时候了解这些信息非常重要。”
Linux基金会普查 II的目的
报告作者表示:“这是为了维持 FOSS 长期安全和健康的活动提供信息。”该报告可以帮助我们预估哪些FOSS软件包被广泛地使用在不同的应用中。它不是评估衡量该软件的风险状况。许多指标可以用来风险提示,但各家企业可能对因素的权重不同。
Mike McGuire对此表示赞同。广泛使用并不代表更关键。他解释道:“大量的应用程序可能正在使用某一特定的 Java GUI 框架,所以这个框架非常流行。但它可能不是软件的关键部分。每个企业应用程序构建的方式不同,其关键组成也大相径庭。”
尽管如此,一旦确定了使用最广泛的软件,我们就更容易评估风险状况。
开源管理的挑战
现在,改善软件识别、分类和维护面临着一些挑战。随着行业朝着广泛标准化和采用软件物料清单(SBOM)的方向发展,了解这些挑战都非常重要,包括:
对软件组件的标准化命名模式的需求,这样应用程序库就可以被唯一地标识。如果没有标准化命名模式,企业将无法在大规模,特别是在全球范围内,相互交流,以共享此类信息。
与软件包版本控制相关的复杂性。公司维护了一个包的内部版本,但没有将他们的更改反馈回官方库。这是一个意想不到的问题。在一个例子中,研究人员多次观察到一个包的 2.87 版本,但官方库只升级到了 2.26 版本。如果 SBOM 无法区分主版本和变更版本,此类软件的购买者将很难知道自己是否容易受到新发现的漏洞的影响
新思科技中国区软件应用安全技术总监杨国梁表示:“开源软件易获取、开放、共享,为业界带来丰富的红利。但同时,对开源组件漏洞的利用,甚至伪装成开源贡献者预埋漏洞,这些都屡见不鲜。近期,Log4Shell和Spring4Shell漏洞在业界沸沸扬扬,这也体现了掌握已使用开源组件信息的必要性。在漏洞披露时,相关方可以采取更及时的行动。因此,软件组成分析 (SCA) 解决方案的重要性日益凸显。SCA可以为应用生成SBOM,如果组件中出现新漏洞,会及时主动通知用户。”
大多数企业级应用,包括我们常用的购物网站、社交媒体等,服务海量用户,需要持续地稳定运行。为此,开发人员经常使用日志,以监控应用的状态和安全。Log4j2是提供日志功能的开源组件;Spring Core Framework用于Java应用,在基于J2EE的应用中被广泛地使用。由此可见,Log4Shell和Spring4Shell漏洞的影响范围之大。
影响FOSS长期安全的问题
这些问题包括:
大多数最广泛使用的FOSS都是由少数贡献者开发的。一个数据集的结果显示,排名前 50 的包中,超过 80%的代码行由 136 名开发人员负责。新思科技《2021年开源安全和风险分析》报告(OSSRA)曾指出开源项目的维护人员并没有随开源项目的普及而保持同步增长,从而经常导致开发人员精疲力竭,许多开源项目只能被放弃。如果项目被放弃,漏洞就不会得到及时修复。
个人开发者帐户安全的重要性正在增加。个人账户通常不像企业账户那样受到很好的保护。在这些个人开发人员帐户的控制下的代码进行更改要容易得多,而且不被发现。此外,如果个别开发人员长时间中断,或出现意外,从而导致无法更新代码,则可能会出现问题。这不是唯一的风险。例如,如果独立的开发人员移动或删除了他们的项目,这可能会破坏数以百万计的依赖它的程序包
开源领域历史遗留软件的持久性。我们都听说过公司宣布停止对旧版本操作系统或应用程序的支持。但这并不意味着每位用户都停止使用这些旧版本。许多企业发现很难决定切换到不同的软件包,因为在无法保证额外收益的情况下切换到新软件会产生财务和时间等成本。2021年 OSSRA报告还发现85% 的代码库含有至少四年未曾更新的开源依赖,即使有更新版本可用,有时还有很多更新的版本。这会带来很多隐患。新版本会修复旧版本种的错误。黑客往往会寻找使用旧版本的应用进行攻击。
Mike McGuire表示:“Linux基金会普查 II展示了最常用的FOSS以及一些深刻的洞察。虽然它不是指导,但是指出组织和个人都需要积极参与FOSS的开发,而不是留给一小部分开发人员像现在这样领导开源项目。该报告还显示了SCA工具在检测开源历史遗留软件方面的重要性,以及 SBOM 领域对标准化的持续需求。”
新思科技开源专家王永雷补充道:“BOM的概念来自制造业,传统BOM是详细列出产品组成的物资明细。当发现缺陷零件时,制造商可以准确地知道哪个产品受到了影响,以便安排修理或更换。现在,随着开源组件的大规模使用,SBOM需求已经开始呈现出增长态势。新思科技的开源管理工具Black Duck可以创建和管理企业级的上下游软件供应链完整的SBOM,帮助管理在应用和容器中使用开源和第三方代码所带来的安全、质量和许可证合规性风险。”