尽管软件供应链严重依赖开源软件,但业界缺乏一致的方法来理解和衡量开源软件的风险。 OSS(Open Source Sofware,开源软件)的风险管理从许可证管理开始,然后发展到CVE,但我们仍然缺乏涵盖安全、法律和运营方面的整体OSS风险管理方法。OWASP通过发布开源软件的十大安全风险,可调动行业专家和领导者合作来实现这一目标。
1. 概览
在过去十年对 OSS 的依赖中,授予为 CVE 编号的已知漏洞已成为安全的关键指标。已知漏洞虽然是一个重要信号,但通常会涵盖善意的开发人员所犯的错误。这些错误可能会被攻击者利用,应该予以修复,但它们很难涵盖依赖 OSS 所包含的全部风险。
CVE 无法捕获运营风险(例如由过时或未维护的软件引入的风险)或下一代供应链攻击(例如名称混淆攻击)。正如 Synopsys 最近的开源安全和风险分析报告所强调的那样,这些风险是巨大的:
- 89% 的代码库包含已过时 4 年以上的 OSS
- 91% 的代码库包含两年多没有新开发的组件
若想了解更多关于Synopsys 2024年开源安全和风险分析报告的细节可以参阅博主前期文章《解读】Synopsys发布2024年开源安全和风险分析报告OSSRA》
Endor Labs的Station 9研究团队在The State of Dependency Management上发现,95%的漏洞存在于传递依赖(开发者选择的OSS自动引入的软件包)中。其中,许多实际上无法访问,或者如果更新,将导致不兼容的毁灭性连锁反应。该列表经过同行评审并由 20 多名 CISO 和 CTO 贡献,团队力求找到安全和开发团队应做好应对的最高风险(包括运营和安全)。
2. 开源软件十大安全风险
序号 | 名称 | 描述 |
---|---|---|
OSS-RISK-1 | 已知漏洞 | 组件版本可能包含由其开发人员意外引入的易受攻击的代码。漏洞详细信息是公开披露的,例如通过 CVE、GitHub 安全公告或其他更非正式的沟通渠道。漏洞和补丁可能可用,也可能不可用。 |
OSS-RISK-2 | 合法软件包的泄露 | 攻击者可能会损害现有合法项目或分发基础设施的资源,以便将恶意代码注入到组件中,例如通过劫持合法项目维护者的帐户或利用漏洞在包存储库中。 |
OSS-RISK-3 | 名称混淆攻击 | 攻击者可能会创建名称与合法开源或系统组件名称相似的组件(抢注)、建议值得信赖的作者(品牌劫持)或使用不同语言或生态系统中的常见命名模式(组合蹲) |
OSS-RISK-4 | 未维护的软件 | 组件或组件版本可能不再被积极开发,因此,原始开源可能无法及时(或根本不)提供功能性和非功能性错误的补丁项目。 |
OSS-RISK-5 | 过时的软件 | 项目可能使用旧的、过时的组件版本(尽管存在较新的版本) |
OSS-RISK-6 | 未跟踪的依赖关系 | 项目开发人员可能根本不知道对组件的依赖关系,例如,因为它不是上游组件的 SBOM 的一部分,因为 SCA 工具未运行或未检测到它,或者因为依赖关系不是使用包管理器建立的。 |
OSS-RISK-7 | 许可证风险 | 组件或项目可能根本没有许可证,或者与预期用途不兼容,或者其要求没有或无法满足。 |
OSS-RISK-8 | 不成熟软件 | 开源项目可能不应用开发最佳实践,例如,不使用标准版本控制方案、没有回归测试套件、审查指南或文档。因此,组件可能无法可靠或安全地工作。 |
OSS-RISK-9 | 未经批准的更改 | 组件可能会在开发人员无法注意到、审查或批准此类更改的情况下进行更改,例如,因为下载链接指向未版本化的资源、因为版本化的资源已被修改或篡改或由于不安全的数据传输。 |
OSS-RISK-10 | 依赖性过小/过大 | 组件可能提供很少的功能(例如 npm 微包)或很多功能(可能只使用其中的一小部分)。 |
3. 案例介绍
Sonatype的研究人员2022年报告了一个通过恶意Python包pymafka
(pymafka软件包包含一个Python脚本,用于监视主机并确定其操作系统)进行的供应链攻击,该包被上传到流行的PyPI代码源。该软件包试图通过名称仿冒感染用户,希望寻找合法的"pykafka"软件包的受害者可能会打错查询语句而下载恶意软件。
pymakfa包如此命名是希望用户能将其与pykafka混淆,后者是一个在企业中广泛使用的Python的Kafka客户端。Kafka是一个开源的分布式事件流平台,被成千上万的公司使用。
若想了解更多开源软件攻击案例和攻击细节,可以参阅https://owasp.org/www-project-open-source-software-top-10/。
4. 参考
[1] https://owasp.org/www-project-open-source-software-top-10/
[2] https://www.sentinelone.com/labs/use-of-obfuscated-beacons-in-pymafka-supply-chain-attack-signals-a-new-trend-in-macos-attack-ttps/