现代软件开发日益分散,大量依赖开源软件(OSS),导致软件供应链复杂且存在安全风险。开源软件由多个分布式开发者共同完成,供应商范围广泛,从爱好者到大型公司。软件供应链包括开发者、存储库、项目依赖管理者(PDMs)、漏洞数据库等环节,每个环节都存在潜在弱点。
近年来,多个供应链攻击事件凸显了这些弱点,例如:
- 2015年Xcode恶意代码分发事件;
- 2016年“left-pad”依赖性问题事件;
- 2017年Python包(PyPI)劫持事件;
- 2018年“事件流”库的后门攻击和Python软件包劫持事件;
- 2019年7月对流行Ruby Gems软件包的账户接管事件;
- 2018-2019 Webmin漏洞利用事件;
- 2019年8月发现11个存在后门漏洞的RubyGems库事件。
这些事件表明,开发者实践、存储库、PDMs和漏洞数据库等方面存在固有的弱点。许多开发者不遵循安全最佳实践,例如缺乏测试、版本控制、变更跟踪和双因素认证等。语言库缺乏基本的安全或质量控制,例如弱认证、缺乏代码来源验证和漏洞检查等。PDMs作为软件检索工具,本身不具备检查软件的能力,其弱点成为恶意行为者的利用途径。漏洞数据库如CVE和NVD在应对现代软件开发增长和复杂性方面面临挑战,导致覆盖范围不足和漏洞管理困难。
终端用户在软件供应链中处于复杂地位,他们可能从供应商处获取技术或自行开发软件。无论哪种情况,他们都需要采取实际步骤,例如检查和验证软件的可靠性、从可靠来源下载软件、确保下载的软件是所需软件等。
结论认为,除非解决软件仓库、PDMs和漏洞数据库等环节的设计和方法弱点,否则将继续面临重大风险。Linux基金会将召集全球技术领袖,共同设计解决方案应对这些挑战。现代软件开发虽然创造了显著价值,但也为风险和剥削创造了机会。