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

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

在软件开发的过程中,我们往往会使用一些第三方或者开源的组件,来提供一些基础的功能或者服务,从而简化开发工作,提高效率和质量。例如,我们可能会使用 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

相关推荐

  • 如何生成一份SBOM清单

    引言 随着软件开发的日益复杂和分散,软件供应链安全成为了一个重要的挑战。软件供应链指的是从源代码到最终产品的整个生命周期中涉及的所有环节,包括开发、构建、测试、部署和维护等。软件供应链中可能存在各种各样的组件和依赖项,如开源软件、第三方库、框架、工具等。这些组件和依赖项可能来自不同的来源,具有不同的许可证,存在不同的漏洞和风险。如果不对这些组件和依赖项进行有…

    2023年7月7日
  • 谈谈常见开源许可证合规风险及解决方案

    因为我本身也在做开源,所以比较关注这个问题,最近因为工作需要,总结和分析了一下关于开源许可证相关的知识,也分享给大家一起讨论,希望得到大家的指导。 前言 2021年12月,抖音海外版 TikTok 上线了一款名为 TikTok Live Studio 的 APP,但不久其下载页面就被删除。TikTok 官方对此事做出回应,原因是该 APP 违反 GPL 许可…

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

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

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

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

    2023年6月27日
  • Java 漏洞扫描工具之 IDE 插件以及强烈修复漏洞解释

    开源组件的漏洞检测工具:使用简单、能力专业、风险展示清晰的 ide 插件“murphysec”的使用指南。

    2023年2月6日

发表回复

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

联系我们

400-180-9568

邮件:hi@murphysec.com

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

关注公众号

20230105-100741