基于Dependency-Track的供应链安全检测方案

逆向病毒分析 3年前 (2022) admin
1,382 0 0

0x01 背景

数字化时代,软件已经成为日常生产生活必备要素之一,渗透到各个重要行业和领域。随着各种新技术理念的演进,软件供应链愈发复杂,全链路安全防护难度不断加大。近年来,频发的软件供应链安全事件,对用户隐私信息安全、财产安全乃至国家安全造成重大威胁。软件供应链的安全直接关系着关键基础设施和重要信息系统安全,保障软件供应链安全成为业界关注焦点,也成为企业机构的共同诉求。
对没有太多安全资源的中小企业来说,在软件开发生命周期中的各种安全措施之中,需要一种自动化的方案,能够对信息系统的供应链安全进行检测,一方面节省人工的投入成本,另外一方面可作为其它安全控制手段的补充。

0x02 Dependency-Track介绍

Dependency-Track是一款开源的供应链安全检测工具。该项目引用了多个CVE漏洞库,基于组件版本,可以判断出项目中哪些组件受CVE漏洞的影响,是上线前进行安全评估检查的手段之一。只需要提供SBOM(软件物料清单)到管理控制台,就可以获取具体的漏洞信息报告。容易部署,简单易用,易于操作。

1、部署方式

有多种部署安装方式,推荐Docker方式,如下:

# Pull the image from the Docker Hub OWASP repodocker pull dependencytrack/bundled# Creates a dedicated volume where data can be stored outside the containerdocker volume create --name dependency-track# Run the bundled container with 8GB RAM on port 8080docker run -d -m 8192m -p 8080:8080 --name dependency-track -v dependency-track:/data dependencytrack/bundled

2、使用方法

默认帐号和密码是admin,首次登录需要进行密码修改。登录之后进行项目创建,点开具体的项目之后,可以上传项目对应的软件应用的SBOM,基于SBOM获取对应的风险报告。内置了CVE漏洞库,也可以注册OSS Index和VulnDB的帐号通过API形式使用这两个服务的第三方组件漏洞检测分析能力。
2.1 创建项目
登录之后,首先进行项目的创建Projects-Create Project,如图所示:

基于Dependency-Track的供应链安全检测方案

2.2 生成BOM文件,并上传
项目创建之后,使用后文中的方法,生成sbom文件,支持xml和json格式。点击项目名称–Dependencies-Upload BOM,如图:

基于Dependency-Track的供应链安全检测方案

3.3 风险查看
上传BOM文件之后,会展示项目依赖的组件信息,并对组件信息是否存在漏洞风险进行分析和展示,具体的展示项包括名称、版本号、风险值、是否存在漏洞等。
在github上找了一个存在log4j远程代码执行漏洞的项目,生成BOM之后上传进行自动化分析,可以看到成功检测出了项目依赖的log4j组件存在漏洞,如图:

基于Dependency-Track的供应链安全检测方案

在项目的Audit功能中,可以看到存在风险的组件和对应的CVE编号、风险等级等,如图:

基于Dependency-Track的供应链安全检测方案

0x03 SBOM介绍和生成

软件物料清单 (SBOM) 是软件中的组件列表,软件供应商通常通过组装开源和商业软件组件来创建产品。SBOM 描述了软件应用产品中的组件,它类似于食品包装上的成分清单,你可能会查阅标签以避免可能导致的食物过敏风险,SBOM 可以帮助组织或个人避免使用可能伤害他们的软件组件。
作为供应链安全管理的一部分,BOM 的概念在传统制造业中得到了广泛认可。制造商使用 BOM 来跟踪其用于创建产品的部件。如果稍后在特定零件中发现缺陷,BOM 可以轻松找到受影响的产品。
SBOM 对软件产品的构建者(制造商)和购买者(客户)都很有用,构建者经常利用可用的开源和第三方软件组件来创建产,SBOM 允许构建者确保这些组件是最新的,并且在新漏洞爆发之后,可快速响应新的漏洞。购买者可以使用 SBOM 来进行漏洞和许可合规等安全分析,这两者都可以用来评估产品中的风险。了解软件供应链、获取 SBOM 并使用它来分析已知漏洞对于管理软件应用风险至关重要。
OWASP CycloneDX 是一种轻量级软件物料清单 (SBOM) 标准,主要用于应用程序供应链组件安全分析。理想情况下,BOM 应包含所有直接和关联使用的组件,以及它们之间的依赖关系。CycloneDX 支持广泛的软件组件类型,包括应用程序组件、容器组件、设备组件、库组件、文件组件、固件组件、框架组件、操作系统组件、服务组件等。该项目也提供了丰富的辅助开源程序,用于帮助java、Go、Python等语言开发的项目快速生成sbom文件。
1、Python项目
以python项目为例,可以使用开源工具cyclonedx-bom生成,通过源代码的方式对cyclonedx-bom进行安装。该工具提供了多种sbom文件生成方式,以使用requirements.txt文件生成为例:
cyclonedx-bom -r -i requirements.txt --format xml -o aa.xml
命令说明:
  • -r   使用项目的requirements.txt文件生成

  • -i    指定项目的requirements.txt文件路径

  • –format 生成的sbom文件格式,有json和xml两种,默认是json格式

  • -o   指定生成的sbom文件的存储路径

同时也可以根据项目情况,基于poetry.lock和Pipfile.lock的内容来生成sbom文件,具体看项目使用的虚拟环境和依赖管理工具是Poetry还是Pipenv。
2、Go项目
Go项目可以使用开源工具cyclonedx-gomod进行sbom文件的生成,支持对Go application应用程序、Go bin二进制程序、Go modules模块生成SBOM文件。
以Go应用程序为例,命令如下:
cyclonedx-gomod app -json -output test-app.bom.json -files -main cmd/acme-app /usr/src/acme-module
  • -json 指定输出的sbom文件格式,只有json格式

  • -output sbom输出的路径和文件名

  • -main Go应用程序的main包路径

  • -file 包含文件

  • /usr/src/acme-module 是项目的模块目录

Go bin二进制程序和Go modules模块的生成命令可以查看后文中cyclonedx-gomod项目的帮助文档。
3、JAVA项目
如果是maven构建的项目,可以直接进入项目pom.xml同级目录,使用如下命令进行sbom文件的生成:
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
生成之后会在项目的target目录中生成json和xml格式的bom文件,如图所示:

基于Dependency-Track的供应链安全检测方案

0x04 参考资料

DT官网
https://dependencytrack.org/
https://github.com/DependencyTrack/dependency-track
OWASP CycloneDX官网:
https://cyclonedx.org/
帮助文档:
https://cyclonedx.org/use-cases/
工具和开源项目:
https://cyclonedx.org/tool-center/
cyclonedx-bom工具(python)
https://github.com/CycloneDX/cyclonedx-python
cyclonedx-gomod工具(Go):
https://github.com/CycloneDX/cyclonedx-gomod

原文始发于微信公众号(毕方安全实验室):基于Dependency-Track的供应链安全检测方案

版权声明:admin 发表于 2022年3月29日 上午10:22。
转载请注明:基于Dependency-Track的供应链安全检测方案 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...