freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Dependency Check:一款针对应用程序依赖组件的安全检测工具
Alpha_h4ck 2024-09-07 14:06:31 93058

关于Dependency Check

Dependency-Check 是一款软件组合分析 (SCA) 工具,可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 (CPE) 标识符来实现此目的。如果找到,它将生成一份链接到相关 CVE 条目的报告。

Dependency-check 有一个命令行界面、一个 Maven 插件、一个 Ant 任务和一个 Jenkins 插件。核心引擎包含一系列分析器,用于检查项目依赖项、收集有关依赖项的信息(在工具中称为证据)。然后使用证据来识别给定依赖项的通用平台枚举 (CPE) 。如果识别出 CPE,则会在报告中列出相关的通用漏洞和暴露 (CVE)条目列表。其他第三方服务和数据源(如 NPM Audit API、OSS Index、RetireJS 和 Bundler Audit)用于特定技术。

Dependency-check 使用 NIST 托管的NVD 数据源自动更新自身。'''重要提示:''' 初始下载数据可能需要十分钟或更长时间。如果您每七天至少运行一次该工具,则只需下载一个小型 JSON 文件即可使数据的本地副本保持最新。

功能介绍

Dependency-check 的工作方式是收集有关其扫描的文件的信息(使用分析器)。收集的信息称为证据;收集的证据有三种类型:供应商、产品和版本。例如,JarAnalyzer 将从 Manifest、pom.xml 和扫描的 JAR 文件中的包名称中收集信息,并且它有启发式方法将来自各种来源的信息放入一个或多个证据桶中。

在 NVD CVE 数据中每个 CVE 条目都有一个易受攻击的软件列表:

<entry id="CVE-2012-5055">

  ...

    <vuln:vulnerable-software-list>

      <vuln:product>cpe:/a:vmware:springsource_spring_security:3.1.2</vuln:product>

      <vuln:product>cpe:/a:vmware:springsource_spring_security:2.0.4</vuln:product>

      <vuln:product>cpe:/a:vmware:springsource_spring_security:3.0.1</vuln:product>

    </vuln:vulnerable-software-list>

  ...

  </entry>

接下来,CPE 数据将被收集并存储在 Lucene 索引中. Dependency-check 然后使用收集到的证据并尝试匹配 Lucene CPE 索引中的条目。如果找到,CPEAnalyzer 将向依赖项添加标识符,然后添加到报告中。一旦识别出 CPE,相关的 CVE 条目就会添加到报告中。

工具配置

导入用于签署所有依赖检查版本的 GPG 密钥:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 259A55407DD6C00299E6607EFFDE55BE73A2D1ED

GitHub Release下载依赖检查命令行工具和相关的 GPG 签名文件,验证下载的加密完整性:

gpg --verify dependency-check-10.0.4-release.zip.asc

将 zip 文件解压到计算机上的某个位置,并将“bin”目录放入路径环境变量中。

工具安装和使用

Homebrew

$ brew install dependency-check

Windows

dependency-check.bat --project "My App Name" --scan "c:\java\application\lib"

*nix

dependency-check.sh --project "My App Name" --scan "/java/application/lib"

Docker使用

Linux

#!/bin/sh

 

DC_VERSION="latest"

DC_DIRECTORY=$HOME/OWASP-Dependency-Check

DC_PROJECT="dependency-check scan: $(pwd)"

DATA_DIRECTORY="$DC_DIRECTORY/data"

CACHE_DIRECTORY="$DC_DIRECTORY/data/cache"

 

if [ ! -d "$DATA_DIRECTORY" ]; then

    echo "Initially creating persistent directory: $DATA_DIRECTORY"

    mkdir -p "$DATA_DIRECTORY"

fi

if [ ! -d "$CACHE_DIRECTORY" ]; then

    echo "Initially creating persistent directory: $CACHE_DIRECTORY"

    mkdir -p "$CACHE_DIRECTORY"

fi

 

# Make sure we are using the latest version

docker pull owasp/dependency-check:$DC_VERSION

 

docker run --rm \

    -e user=$USER \

    -u $(id -u ${USER}):$(id -g ${USER}) \

    --volume $(pwd):/src:z \

    --volume "$DATA_DIRECTORY":/usr/share/dependency-check/data:z \

    --volume $(pwd)/odc-reports:/report:z \

    owasp/dependency-check:$DC_VERSION \

    --scan /src \

    --format "ALL" \

    --project "$DC_PROJECT" \

    --out /report

    # Use suppression like this: (where /src == $pwd)

    # --suppression "/src/security/dependency-check-suppression.xml"

Windows

@echo off

 

set DC_VERSION="latest"

set DC_DIRECTORY=%USERPROFILE%\OWASP-Dependency-Check

SET DC_PROJECT="dependency-check scan: %CD%"

set DATA_DIRECTORY="%DC_DIRECTORY%\data"

set CACHE_DIRECTORY="%DC_DIRECTORY%\data\cache"

 

IF NOT EXIST %DATA_DIRECTORY% (

    echo Initially creating persistent directory: %DATA_DIRECTORY%

    mkdir %DATA_DIRECTORY%

)

IF NOT EXIST %CACHE_DIRECTORY% (

    echo Initially creating persistent directory: %CACHE_DIRECTORY%

    mkdir %CACHE_DIRECTORY%

)

 

rem Make sure we are using the latest version

docker pull owasp/dependency-check:%DC_VERSION%

 

docker run --rm ^

    --volume %CD%:/src ^

    --volume %DATA_DIRECTORY%:/usr/share/dependency-check/data ^

    --volume %CD%/odc-reports:/report ^

    owasp/dependency-check:%DC_VERSION% ^

    --scan /src ^

    --format "ALL" ^

    --project "%DC_PROJECT%" ^

    --out /report

    rem Use suppression like this: (where /src == %CD%)

    rem --suppression "/src/security/dependency-check-suppression.xml"

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可协议。

项目地址

Dependency Check:【传送门

参考资料

https://github.com/jeremylong/DependencyCheck

https://owasp.org/www-project-dependency-check/

# 漏洞扫描 # 安全扫描 # 开源组件安全 # 组件安全 # 依赖扫描
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录