如何排查软件中的使用的开源组件清单?

软件中为什么会依赖开源组件?

在软件开发的过程中,我们往往会使用一些第三方或者开源的组件,来提供一些基础的功能或者服务,从而简化开发工作,提高效率和质量。例如,我们可能会使用 Apache Commons、Spring Boot、jQuery 等开源组件来实现一些常见的操作,如字符串处理、Web 开发、DOM 操作等。

使用开源组件的好处是显而易见的,它们可以帮助我们节省时间和成本,提供更多的选择和灵活性,以及获取最新的技术和创新。根据一项调查,超过 90% 的组织在他们的应用程序中使用了开源组件。这意味着现代的应用程序中,开源代码的比例已经超过了自定义代码。

为什么要排查软件中使用了哪些开源组件?

虽然使用开源组件有很多好处,但是它们也带来了一些风险和挑战。其中最主要的一个就是安全风险。由于开源组件的源代码是公开的,任何人都可以查看和修改它们。这就给了攻击者一个机会,他们可以利用开源组件中存在的漏洞,或者向其中植入恶意代码,来对使用这些组件的软件进行攻击。

根据另一项调查,78% 的代码库至少有一个漏洞,86% 的代码库中被调用的组件不是最新版本。这说明了很多软件在使用开源组件时,并没有及时更新和修复它们。如果不及时排查和解决这些问题,就可能导致严重的后果,如数据泄露、系统崩溃、法律诉讼等。

除了安全风险之外,还有一些其他的风险和挑战,比如:

  • 许可证风险:不同的开源组件可能有不同的许可证协议,有些许可证可能会对软件的分发、修改、商业化等方面有一些限制或者要求。如果不遵守这些许可证协议,就可能面临法律纠纷或者声誉损失。
  • 兼容性风险:不同的开源组件可能有不同的依赖关系、版本要求、API 接口等。如果不注意这些差异和变化,就可能导致软件出现错误或者无法正常运行。
  • 维护性风险:开源组件可能会随着时间而变化或者停止更新。如果不及时跟进这些变化或者寻找替代方案,就可能导致软件出现过时或者无法维护的问题。
如何排查软件中的使用的开源组件清单?

因此,为了保证软件的安全、合规、稳定和可持续发展,我们需要对软件中使用了哪些开源组件进行有效地排查,并及时采取相应的措施。

如何排查软件中使用了哪些开源组件及具体版本?

要排查软件中使用了哪些开源组件及具体版本,我们需要有一个准确和完整的组件清单(SBOM),也就是一个包含了所有第三方和开源组件及其相关信息(如名称、版本、许可证、位置、依赖关系等)的列表。

有了这个清单,我们就可以对软件中的每个组件进行分析和评估,比如:

  • 检查组件是否有已知的漏洞或者安全风险,如果有,就需要及时更新或者替换组件。
  • 检查组件是否有合适的许可证协议,如果没有,就需要避免使用或者获取授权。
  • 检查组件是否是最新的版本,如果不是,就需要考虑是否有必要升级或者降级组件。
  • 检查组件是否有冲突或者不兼容的情况,如果有,就需要解决或者调整组件。

那么,如何获取这个组件清单呢?有以下几种常见的方法:

  • 手动检查:这是最简单也最不可靠的方法,就是通过人工的方式,查看软件中使用了哪些组件及其相关信息。这种方法的缺点是非常耗时和容易出错,而且很难保持清单的更新和完整。
  • 解析包管理文件:这是一种比较常用也比较有效的方法,就是通过解析软件中使用的包管理工具(如 Maven, NPM, Pip 等)生成的包描述文件(如 pom.xml, package.json, requirements.txt 等),来获取组件的信息。这种方法的优点是比较快速和准确,而且可以覆盖直接和间接的依赖。但是这种方法也有一些局限性,比如:
    • 不同的包管理工具可能有不同的格式和规范,需要进行转换或者适配。
    • 一些组件可能没有使用包管理工具来管理,而是直接下载或者复制到软件中,这样就无法通过包描述文件来获取它们的信息。
    • 一些组件可能在运行时才动态加载或者生成,而不是在编译时就确定,这样就无法通过包描述文件来获取它们的信息。
  • 构建软件项目:这是一种比较全面也比较复杂的方法,就是通过构建软件项目的过程,来获取组件的信息。这种方法的优点是可以覆盖所有类型和来源的组件,而且可以获取更多的细节和元数据。但是这种方法也有一些挑战,比如:
    • 需要配置和运行构建环境和工具,可能会遇到一些技术或者资源上的困难。
    • 需要处理构建过程中可能出现的错误或者异常,可能会影响构建结果和效率。
    • 需要分析和提取构建过程中产生的大量数据和日志,可能会增加复杂度和开销。

有什么常用的工具可以自动生成软件依赖的开源组件列表?

根据上面介绍的方法,我们可以看出,排查软件中使用了哪些开源组件及具体版本并不是一件容易的事情。幸运的是,有一些专业的工具可以帮助我们自动生成软件依赖的开源组件列表,并提供一些额外的功能和服务,来帮助我们管理和优化我们的开源使用。下面介绍一些常用的工具:

  • 墨菲安全(苏木):这是一个专业的软件供应链安全管理平台,它可以帮助我们快速、准确、全面地分析我们的代码中使用的所有开源组件,发现并修复其中存在的安全风险和合规问题。它的主要特点和优势有:
    • 快速接入:它可以在 3 分钟内快速配置接入超过十种开发工具,如 IDE, GitLab, GitHub, Jenkins 等,无缝集成到我们的开发流程中,一键修复安全漏洞。
    • 深度分析:它可以持续地检测我们的代码中使用的所有开源组件,并与一个包含超过 300 万个开源库的数据库进行对比。它可以生成详细的 SBOM 清单,包括依赖、许可证、位置、版本、漏洞和合规性等信息。
    • 智能修复:它可以提供一些智能的建议和修复方案,来帮助我们优化我们的开源使用。它可以自动更新或者替换有风险的组件,避免或者解决许可证冲突,提升代码质量和安全性。
    • 专业知识库:它拥有全球领先的专业漏洞知识库,包括独家的 0day 漏洞及投毒情报,超过 25 个专业的漏洞知识库字段。它可以及时有效地提供漏洞预警和通报,帮助我们防患于未然。

工具官网:https://www.murphysec.com

  • OSS Review Toolkit (ORT):这是一个开源的软件策略自动化和编排工具集,可以帮助我们以战略、安全和高效的方式管理我们的(开源)软件依赖项。它可以生成 CycloneDX, SPDX SBOMs 或者自定义格式 的开源软件归属文档(Software Bill of Materials, SBOM),并提供一些分析和报告功能,如许可证合规性检查、漏洞扫描、策略评估等。它支持多种语言和包管理工具,如 Java, Python, NPM, Gradle 等,并可以与其他工具集成,如 Jenkins, GitHub Actions 等。

工具官网:https://github.com/oss-review-toolkit/ort

  • Mend:这是一个专业的开源管理平台,可以持续地检测我们的代码中使用的所有开源组件,并与一个包含超过 300 万个开源库的数据库进行对比。它可以一键生成一个详细的开源组件清单报告,包括依赖、许可证、位置、版本、漏洞和合规性等信息。它还可以提供一些智能的建议和修复方案,来帮助我们优化我们的开源使用。它支持多种语言和包管理工具,如 Java, JavaScript, Ruby, PHP 等,并可以与其他工具集成,如 GitHub, GitLab, Bitbucket 等。

工具官网:https://www.mend.io/

以上就是一些常用的工具可以自动生成软件依赖的开源组件列表。当然,还有其他一些工具,如 Snyk, Black Duck, WhiteSource 等,也可以提供类似或者更多的功能和服务。我们可以根据我们的需求和偏好,选择合适的工具来帮助我们排查软件中的开源组件使用情况。

(0)
上一篇 2023年8月9日 下午7:15
下一篇 2023年8月9日 下午7:29

相关推荐

  • 多年来免费下载管理器网站将Linux用户重定向到恶意软件

    据报道,免费下载管理器供应链攻击将 Linux 用户重定向到安装了窃取信息的恶意软件的恶意 Debian 软件包存储库。 此活动中使用的恶意软件会建立一个反向外壳到C2服务器,并安装一个收集用户数据和帐户凭据的Bash窃取程序。 卡巴斯基在调查可疑域名时发现了潜在的供应链妥协案件,发现该活动已经进行了三年多。 尽管网络安全公司已通知软件供应商,但尚未收到回复…

    2023年9月14日
    0
  • 软件完整性保护方案之Sigstore

    背景 SolarWinds Orion 软件更新包在2020年底被黑客植入后门,此次攻击事件波及范围极大,包括美国政府部门、关键基础设施以及多家全球500强企业,影响难以估计。如果用户能确认软件来源是可信的 SolarWinds 官方,这次事件可能可以避免。 为了确认软件的来源和构建方式,实现完整性保护,Linux基金会联合Red Hat、Google 和 …

    2023年8月9日
    0
  • 用社区和开发者工具驱动软件供应链安全治理

    本文整理自 OSCS 软件供应链安全技术论坛- 章华鹏老师开场致辞的分享内容。 章华鹏,十二年的企业安全建设、安全社区白帽子、开发者,先后在百度、贝壳负责过企业安全建设 ,也在乌云负责过安全产品,业余时间活跃于安全技术社区,帮助企业、开源项目、软件公司解决过数百个严重安全问题,现在负责墨菲安全和 OSCS 社区,专注于软件供应链安全方向。 软件供应链安全的概…

    2023年8月9日
    0
  • Mandiant公司称黑客组织利用巴拉克达零日漏洞,针对政府、军事和电信领域进行攻击

    Thehackernews 发文称一名涉嫌与中国有关的黑客组织利用最近披露的巴拉克达网络电子邮件安全网关(ESG)设备的零日漏洞,作为一项全球间谍活动的一部分,入侵了政府、军事、国防和航空航天、高科技行业以及电信领域。 追踪该活动的Mandiant公司将威胁行为称为“UNC4841”,并描述该威胁行为者“对防御措施高度敏感”,并能够主动调整其作案方式以保持对…

    2023年8月31日
    0
  • 使用 SBOM 查找 Amazon EKS 集群上运行的易受攻击的容器映像

    前言 当你在当地的杂货店购买包装好的食品时,你可能会检查上面列出的成分列表,以了解其中含有什么,确保你不会不经意地摄入你不希望吃的成分或已知对健康有不良影响的成分。但当你购买或使用软件产品时,你是否也有这样的思考方式?你是否清楚地了解构成该软件的各个组件,并知道其中是否有任何已知的漏洞?如今的典型软件应用都是使用许多开源软件库和可重复使用的第三方代码构建的。…

    2023年8月11日
    0