depproof/depproof-action
GitHub: depproof/depproof-action
一款在 CI 环境中本地运行的依赖漏洞与许可证审计工具,支持生成 CycloneDX SBOM 并在 PR 中拦截不合规依赖。
Stars: 0 | Forks: 0
# depproof — 针对 Maven、Gradle 和 npm 的依赖漏洞与许可证审计工具
在您的 pull request 中捕获存在漏洞和不合规的依赖项——扫描完全在您的 CI runner 内部运行,**您的源代码和清单文件绝不会离开本地**。
depproof 会扫描您的 Maven、Gradle 和 npm/pnpm/yarn 依赖清单,并与 [OSV.dev](https://osv.dev)(漏洞)以及完整的 [SPDX 许可证库](https://spdx.org/licenses/) + [ClearlyDefined.io](https://clearlydefined.io)(许可证)进行比对,生成 CycloneDX 1.6 SBOM,并设置用于拦截 PR 的通过/失败退出代码。
## 为什么选择 depproof
- **隐私优先。** 扫描在您的 GitHub Actions runner 内部运行。您的 `pom.xml` / `build.gradle.kts` / `package-lock.json` 绝不会离开本地——仅会针对公共注册表以及漏洞/许可证数据库检查单个包的坐标。不上传源代码,无需账户,无遥测。
- **适配 Monorepo。** 默认自动发现仓库中的所有清单文件(Maven、Gradle 和 npm/pnpm/yarn,位于任何子目录中)。正确处理多模块 Maven 项目,确保子模块基于其父模块构建。
- **精准的传递依赖解析。** 解析完整的传递依赖树,使其与您构建实际发布的内容一致(包含 Spring Boot / Kotlin / Quarkus 托管版本),从而避免因您已修补的版本而出现误报的 CVE。
- **对小型企业免费。** 年收入低于 100 万美元的组织可免费使用——无需注册,无需 API key,无配额限制。(大型组织:需商业许可——请联系 licensing@depproof.com。)
## 快速开始
在您的仓库中添加单个工作流文件:
```
# .github/workflows/audit.yml
name: Dependency Audit
on:
push:
branches: [main]
pull_request:
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: depproof/depproof-action@v1
- uses: actions/upload-artifact@v4
if: always()
with:
name: depproof-reports
path: |
depproof-*.json
depproof-report*.html
```
就这样。在每次 PR 以及推送到 main 分支时,depproof 都会扫描您的仓库,如果存在任何 CRITICAL(严重)级别的漏洞,则会导致构建失败。
## 配置
所有输入均为可选。默认配置已适用于大多数仓库。
```
- uses: depproof/depproof-action@v1
with:
# Single file mode (skip auto-discovery)
file: backend/pom.xml
# OR multiple explicit files (newline or comma-separated)
files: |
backend/pom.xml
services/api/pom.xml
# Auto-discover manifests under root (default: true). Set false to require file/files.
discover: true
# Severity threshold for failure: critical (default) | high | medium | low | none
fail-on: critical
# Discovery root. Default: $GITHUB_WORKSPACE
root: backend
# Extra glob patterns to exclude (on top of default node_modules / target / build / etc.)
exclude: 'fixtures/**,examples/**'
# Where to write SBOM artifacts. Default: $GITHUB_WORKSPACE
output-dir: reports
# Also emit a human-readable HTML report (depproof-report.html). Default: true
html: true
```
## 默认扫描内容
自动发现功能会在您的仓库中的任何位置查找以下清单文件:
- `pom.xml` (Maven)
- `build.gradle`、`build.gradle.kts`、`gradle.lockfile`、`libs.versions.toml`、`dependencies.txt` (Gradle)
- `package-lock.json` (npm)、`pnpm-lock.yaml` (pnpm)、`yarn.lock` (yarn) —— 直接根据 lockfile 解析,无需安装
并**跳过**以下目录(构建输出和第三方代管代码——此处无需审计):
- `node_modules/`、`target/`、`build/`、`.gradle/`、`.git/`、`dist/`、`out/`、`vendor/`、`test-fixtures/`、`__fixtures__/`
使用 `exclude` 可在默认设置基础上添加自定义 glob 模式。
## 输出
运行成功后,depproof 会将结果写入工作区(或写入 `output-dir` 如果已设置):
| 文件 | 内容 |
|---|---|
| `depproof-summary.json` | 汇总结果:各清单统计、漏洞/许可证总数、每个清单的通过/失败状态 |
| `depproof-sbom-.json` | 每个扫描清单对应的 CycloneDX 1.6 SBOM。路径中的斜杠会被替换为 `--`。 |
| `depproof-report.html` | 人类可读的报告(漏洞 + 依赖项 + 许可证策略)。独立生成——可离线打开,无需网络或 JS。在多清单扫描中,这将是一个索引页面,为每个清单链接一个 `depproof-report-.html`。设置 `html: false` 可跳过此步骤。 |
`depproof-summary.json` 的 schema 在 v1 版本中是稳定的——可安全地在后续步骤中使用:
```
{
"schemaVersion": 1,
"depproofVersion": "0.1.4",
"scannedAt": "2026-06-12T14:53:25Z",
"rootDir": "/github/workspace",
"manifests": [
{
"path": "backend/pom.xml",
"ecosystem": "Maven",
"components": 132,
"direct": 29,
"transitive": 103,
"vulns": { "critical": 0, "high": 4, "medium": 5, "low": 4 },
"licenses": { "forbidden": 0, "review": 15, "allowed": 117, "unknown": 0 },
"sbomFile": "depproof-sbom-backend--pom.xml.json",
"fail": false,
"isParentPom": false,
"unresolvedCount": 0
}
],
"totals": { "critical": 0, "high": 4, "medium": 5, "low": 4 },
"fail": false
}
```
## 退出代码
- `0` — 扫描无异常(或没有超过 `fail-on` 阈值的发现)
- `1` — 发现结果超过 `fail-on` 阈值(一个或多个清单失败)
- `2` — 扫描错误(参数错误或不支持的文件)
## 示例
### Monorepo / 多模块项目
```
- uses: depproof/depproof-action@v1
# Discovery default — scans every Maven/Gradle manifest under repo root.
# Multi-module Maven projects: parent + child POMs are auto-detected and bundled,
# so child modules build on their parent locally (no Maven Central round-trip).
```
### 仅扫描一个特定的清单
```
- uses: depproof/depproof-action@v1
with:
file: services/api/pom.xml
```
### 遇到 HIGH 或更高级别时失败(不仅是 CRITICAL)
```
- uses: depproof/depproof-action@v1
with:
fail-on: high
```
### 以非阻塞咨询模式使用 depproof
```
- uses: depproof/depproof-action@v1
with:
fail-on: none # never fails on findings (scan errors still exit 2); results still in artifacts
```
## 许可证
depproof 是专有软件,对于年收入低于 100 万美元的组织**免费**使用。大型组织需要商业许可(请联系 licensing@depproof.com)。请参阅 [LICENSE](LICENSE)。
## 隐私
depproof 仅会向以下公共服务发起外部网络请求:
- `repo.maven.apache.org` — Maven Central,用于传递依赖解析
- `api.osv.dev` — OSV.dev 漏洞数据库
- `api.clearlydefined.io` — ClearlyDefined.io 许可证元数据(当 SPDX 库不匹配时的后备选项)
无遥测。无数据回传。无 API key。
depproof 作为独立的 Docker 镜像(`ghcr.io/depproof/depproof`)运行——您的 runner 上无需安装本地 Java、Maven 或 Gradle。请参阅 [action.yml](./action.yml) 了解具体的调用方式。
📖 许可证详解、SBOM 及 SCA 指南,以及完整文档 → **[depproof.com](https://depproof.com)**
标签:DevSecOps, SBOM, Syscall 审计, 上游代理, 依赖审计, 后台面板检测, 开源合规, 暗色界面, 硬件无关, 请求拦截