如何使用dep-scan对项目中的依赖组件进行安全审计
2022-3-13 23:45:27 Author: www.freebuf.com(查看原文) 阅读量:7 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

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

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

FreeBuf+小程序

FreeBuf+小程序

关于dep-scan

dep-scan是一款针对软件依赖组件的安全审计工具,可以帮助广大研究人员对软件项目中引入的依赖组件进行安全审计。该工具支持本地代码库或容器镜像,可以与各种CI环境集成,比如说Azure Pipelines、CircleCI、Google CloudBuild。值得一提的是,dep-scan的运行是不需要服务器的。

功能介绍

1、基于CVE的本地代码库和容器镜像安全扫描。

2、代码包漏洞扫描在本地执行,且速度非常快,不需要使用服务器。

3、针对软件包提供最佳修复版本建议。

4、对依赖性混淆攻击和维护风险执行深度代码包安全审计。

注意:容器内只有跟目标应用程序相关的依赖包才可以进行安全审计,系统级的代码包目前还不支持进行安全扫描。

漏洞数据源

OSV

NVD

GitHub

NPM

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/AppThreat/dep-scan.git

工具选项

usage: depscan [-h] [--no-banner] [--cache] [--sync] [--suggest] [--risk-audit] [--private-ns PRIVATE_NS] [-t PROJECT_TYPE] [--bom BOM] -i SRC_DIR [-o REPORT_FILE]

              [--no-error]

  -h, --help            show this help message and exit

  --no-banner           Do not display banner

  --cache               Cache vulnerability information in platform specific user_data_dir

  --sync                Sync to receive the latest vulnerability data. Should have invoked cache first.

  --suggest             Suggest appropriate fix version for each identified vulnerability.

  --risk-audit          Perform package risk audit (slow operation). Npm only.

  --private-ns PRIVATE_NS

                        Private namespace to use while performing oss risk audit. Private packages should not be available in public registries by default. Comma

                        separated values accepted.

  -t PROJECT_TYPE, --type PROJECT_TYPE

                        Override project type if auto-detection is incorrect

  --bom BOM             Examine using the given Software Bill-of-Materials (SBoM) file in CycloneDX format. Use cdxgen command to produce one.

  -i SRC_DIR, --src SRC_DIR

                        Source directory

  -o REPORT_FILE, --report_file REPORT_FILE

                        Report filename with directory

  --no-error            Continue on error to prevent build from breaking

工具使用

dep-scan非常适合在CI环境中使用,也可以作为本地开发过程中的一款扫描工具使用。

结合ShiftLeft使用

dep-scan整合了ShiftLeft的扫描功能,即一款免费开源的SAST工具。如需启用该功能,只需要使用下列命令参数即可:

---

--type python,depscan,credscan

扫描本地项目(Python版本)

sudo npm install -g @appthreat/cdxgen

pip install appthreat-depscan

上述命令执行后,将会安装两个命令,即cdxgen和scan。

我们可以直接调用扫描命令:

cd <project to scan>

depscan --src $PWD --report_file $PWD/reports/depscan.json

扫描本地容器(Python版本)

扫描容器“shiftleft/scan-slim”的“latest”标签:

depscan --no-error --cache --src shiftleft/scan-slim -o containertests/depscan-scan.json -t docker

将“license”添加至扫描类型,并执行许可证审计:

depscan --no-error --cache --src shiftleft/scan-slim -o containertests/depscan-scan.json -t docker,license

我们还可以使用sha256摘要指定扫描容器:

depscan --no-error --src [email protected]:a5c5f8a64a0d9a436a0a6941bc3fb156be0c89996add834fe33b66ebeed2439e -o containertests/depscan-redmine.json -t docker

我们也可以使用Docker来保存容器镜像,然后执行深度扫描:

docker save -o /tmp/scanslim.tar shiftleft/scan-slim:latest

# podman save --format oci-archive -o /tmp/scanslim.tar shiftleft/scan-slim:latest

depscan --no-error --src /tmp/scanslim.tar -o reports/depscan-scan.json -t docker

扫描本地项目(Docker容器)

使用默认配置扫描:

docker run --rm -v $PWD:/app appthreat/dep-scan scan --src /app --report_file /app/reports/depscan.json

使用自定义环境变量扫描:

docker run --rm \

    -e VDB_HOME=/db \

    -e NVD_START_YEAR=2010 \

    -e GITHUB_PAGE_COUNT=5 \

    -e GITHUB_TOKEN=<token> \

    -v /tmp:/db \

-v $PWD:/app appthreat/dep-scan scan --src /app --report_file /app/reports/depscan.json

支持的语言和包格式

语言

包格式

node.js

package-lock.json, pnpm-lock.yaml, yarn.lock, rush.js

java

maven (pom.xml [1]), gradle (build.gradle, .kts), scala (sbt)

php

composer.lock

python

setup.py, requirements.txt [2], Pipfile.lock, poetry.lock, bdist_wheel, .whl

go

binary, go.mod, go.sum, Gopkg.lock

ruby

Gemfile.lock, gemspec

rust

Cargo.toml, Cargo.lock

.Net

.csproj, packages.config, project.assets.json, packages.lock.json

docker / oci image

所有支持的语言,系统软件包除外

工具运行截图

项目地址

dep-scan:GitHub传送门

参考资料

https://slscan.io/

https://github.com/ShiftLeftSecurity/sast-scan

https://github.com/AppThreat/WebGoat/blob/develop/azure-pipelines.yml#L33

https://github.com/AppThreat/dep-scan/blob/master/.github/workflows/pythonapp.yml

https://ossindex.sonatype.org/


文章来源: https://www.freebuf.com/articles/security-management/324643.html
如有侵权请联系:admin#unsafe.sh