2023年十大开源软件风险

现代软件几乎80%的代码都是开源代码,开源软件已经成为现代软件开发的基石,但同时也是软件供应链中最薄弱的环节。

根据应用安全公司Synopsys的调研,84%的商业和专有代码库中至少检测到一个已知的开源漏洞,其中48%属于高风险漏洞,包括已被积极利用的远程代码执行漏洞。

根据Endor Labs最新发布的报告,当前企业主要面临以下十大开源安全风险:

1. 已知漏洞

2. 合法开源软件包泄漏

3. 名称混淆攻击

4. 缺乏维护的软件

5. 过时的软件

6. 未跟踪的依赖项

7. 许可证风险

8. 不成熟的软件

9. 未经批准的变更

10. 依赖项不足/过多

三大开源安全风险

已知漏洞在十大开源风险榜单中排名第一。Endor Labs报告称,如果软件中的已知漏洞被攻击者利用,可能会危及相应系统或其数据的机密性、完整性或可用性。

近年来影响最大的一些已知漏洞包括导致Equifax数据泄露的Apache Struts中的CVE-2017-5638漏洞和Apache Log4j(也称为Log4Shell)中的CVE-2021-44228漏洞。

为避免已知漏洞的风险,报告建议企业定期扫描开源软件,对漏洞进行优先级排序并优化资源分配。

合法开源软件包泄露是开源软件的第二大风险。攻击者可能会入侵合法开源项目或代码分发渠道资源,将恶意代码注入组件。例如,劫持合法项目维护者的帐户或利用包存储库中的漏洞。SolarWinds网络攻击就是一个典型的入侵合法软件包的案例。

第三大开源软件风险是名称混淆攻击。攻击者创建名称类似于合法开源或系统组件名称的组件,冒充值得信赖的开发者(品牌劫持)或使用不同语言或生态系统中的通用命名模式。

为避免名称混淆攻击风险,企业需要检查安装hooks前后的代码特征以及项目特征,如源代码存储库、维护者帐户、发布频率、下游用户数量等。此类风险的一个例子是Colourama攻击,这是对名为“Colorama”的合法Python包的域名仿冒攻击,可将比特币转账重定向到攻击者控制的钱包。

三大运营风险

除了开源软件本身包含的重大安全风险外,报告还分析了开源软件风险可能带来的主要运营风险。

缺乏维护的,或不再积极开发或更新的开源组件版本会导致安全漏洞缺少补丁,这是开源软件带来的最大运营风险。补丁开发工作将不得不由下游开发人员自己完成,从而导致工作量增加和解决时间更长。在补丁开发期间,系统将(长期)处于暴露状态。

过时的软件(不要与无人维护的软件混淆)是开源软件的第二大运营大风险。所谓过时软件指的是一个软件项目使用了旧的开源组件版本,而不是最新的版本。

如果项目使用的开源组件版本远远落后最新版本,那么在紧急情况下很难及时更新。旧版本也很难获得与最新版本相同级别的安全评估。

此外,如果新版本在句法或语义上与当前使用的旧版本不兼容,开发人员可能还需要进行大量更新或迁移工作来解决不兼容问题。

开源软件的第三大运营风险是未跟踪的依赖项,即开发人员完全未意识到的开源组件依赖项。这可能是因为该组件没有记录在上游组件的软件物料清单(SBOM)中,软件成分分析(SCA)工具压根没有检测到,或者因为该依赖项不是使用包管理器创建的。因此,开发人员在选择SCA工具时需要评估和比较其生成准确物料清单的能力。

前一篇时隔近两年,斯坦福大学再遭数据泄露
后一篇首个能绕过Windows 11安全启动的恶意软件问世