- 核心观点:开源软件虽有优势但存在漏洞和脆弱性,依赖图复杂导致依赖解析非确定性,不同工具和环境下同一包的依赖图可能不同,SBOM 不能解决依赖问题,需重视依赖管理。
关键信息:
- 2024 年 13%的 Log4j 包下载为漏洞版本,94.9%的漏洞开源下载为已打补丁的旧版本。
- 如 popular npm 工具 webpack 最新版本有数百万潜在依赖图,具体依赖图取决于构建的其他软件、系统等。
- 依赖图复杂原因包括依赖不孤立、解析随时间变化、不同工具产生不同图、工具行为改变、基于系统架构不同等。
- SBOM 对完整二进制构建有用,但对下载包的依赖约束无用,因为用户安装时会重新解析。
- 提出依赖管理建议,如考虑每个依赖的成本、扫描最终生产环境的依赖、制定依赖管理策略等。
重要细节:
- 以
webpack/5.94.0
为例,其直接依赖 23 个包,解析过程会产生约 6.2×10⁴²个可能的依赖图。 - 不同工具如 npm、yarn、pnpm 对同一组 npm 依赖有不同分辨率结果。
- NuGet 不同版本行为不同,早期偏好最低主版本和次版本及最高补丁版本,后来改为偏好最低版本。
- 包可能为不同系统架构和操作系统指定不同依赖,导致开发和生产环境的依赖图不同。
- 介绍了几位作者的工作及相关项目,如 Josie Anugerah 在 Google Open Source Security Team 工作,领导 NuGet 等项目;Eve Martin-Jones 也在该团队从事 deps.dev 项目等。
- 以
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。