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

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

在软件开发的过程中,我们往往会使用一些第三方或者开源的组件,来提供一些基础的功能或者服务,从而简化开发工作,提高效率和质量。例如,我们可能会使用 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 等,也可以提供类似或者更多的功能和服务。我们可以根据我们的需求和偏好,选择合适的工具来帮助我们排查软件中的开源组件使用情况。

使用专业版的工具来快速生成可靠的开源软件清单

作为一家商业公司,您需要管理您的软件项目中使用的所有开源组件,及时发现并修复其中的安全漏洞和合规问题。为了实现这一目标,您需要一个专业的软件供应链安全管理平台,而不是简单的开源工具。我们向您推荐墨菲安全商业版产品,它可以帮助您:

  • 快速生成详细的开源组件列表清单(SBOM)
  • 深度分析开源组件的安全风险和许可证合规性
  • 智能提供修复建议和一键修复功能
  • 及时获取最新的漏洞情报和预警

墨菲安全是国内领先的软件供应链安全管理平台,已经成为蚂蚁集团、美团、中国银行、中国移动、中国电信等数十家客户的官方安全检测工具。墨菲安全的核心团队来自百度、华为等公司,拥有超过十年的软件安全相关经验,服务质量可靠。您可以免费申请试用墨菲安全商业版产品,体验它给您带来的便捷和安心。

目前墨菲安全商业版有免费试用可在线申请:https://www.murphysec.com/enterprise

发布者:墨菲安全,转发请注明出处:https://www.murphysec.com/blog/knowledge-popularization/4887.html

(0)
上一篇 2023年6月27日 00:49
下一篇 2023年7月7日 18:54

相关推荐

  • 我们如何对您的代码进行检测

    所有的代码分析过程都在您的本地环境 整个检测过程主要分为两个环节:获取项目依赖信息、分析项目依赖存在的漏洞 ¶1. 获取项目依赖信息(用户本地环境) 墨菲安全在检测项目存在的安全问题时,首先需要获取到项目的依赖信息。目前我们主要采用项目构建及解析包管理文件两种方式。 我们以使用 Maven 作为构建工具的项目为例: Maven 是专门为 Java …

    2023年1月4日
  • Gitlab 集成 MurphySec 实时代码安全检测

    一、功能简介 将墨菲安全代码安全检测工具集成到 GitLab CI 中,可对每一次代码更新实时进行安全漏洞检测,并快速修复这些安全漏洞。 如果您使用过 GitLab CI 请直接按照第 4 步开始操作 集成效果 二、操作步骤 2.1 部署 GitLab Runner 为了使用 GitLab 的 CI/CD 功能,我们需要在一台能够访问到 GitLab 服务的…

    2023年7月17日
  • 软件完整性保护方案之Sigstore

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

    2023年1月4日
  • RocketMQ 组件的安全漏洞及修复方案

    Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件,在由阿里捐赠给Apache软件基金会之后孵化成了Apache的一个顶级项目(Top-Level Project,TLP)。它是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。 RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海…

    2023年7月14日
  • CSO 们关注的软件供应链安全十个关键问题

    写在前面 自从和几个小伙伴一起创办墨菲安全以来,有一年半多的时间了,创业对于我来说,很有意思的一个地方,就是有机会可以和各行各业很多非常有意思的人一起交流,在这个交流的过程中能够不断的提升自己的认知,以我自己创业之前的经历来说,我接触的大多都是互联网和互联网安全这个圈子的人,而现在有很多机会去接触到更多行业的客户和合作伙伴,可以有机会去了解不同行业的业务、安…

    2023年6月27日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-180-9568

邮件:hi@murphysec.com

工作时间:周一至周五,10:00-19:00,节假日休息

关注公众号

20230105-100741