多个依赖图的惊喜

  • 核心观点:开源软件虽有优势但存在漏洞和脆弱性,依赖图复杂导致依赖解析非确定性,不同工具和环境下同一包的依赖图可能不同,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 项目等。
阅读 4
0 条评论