vulnlog/vulnlog
GitHub: vulnlog/vulnlog
Vulnlog 是一款将 SCA 漏洞分析结果以 YAML 文件形式记录在 Git 仓库中的 CLI 工具,实现一次分析、多方共享,自动生成扫描器抑制文件和 HTML 漏洞报告。
Stars: 10 | Forks: 5
# Vulnlog
**供应链安全,即代码。**
[](https://github.com/vulnlog/vulnlog/releases)
[](https://github.com/vulnlog/vulnlog/actions/workflows/ci.yaml)
[](LICENSE)
Vulnlog 是漏洞分析的唯一事实来源:你只需在 Git 仓库的 YAML 文件中记录一次每个漏洞发现的分析和判定结果,
Vulnlog 就会将该结果传达给所有需要的人——你的团队、你的扫描器、你的客户以及你的自动化流程。
Vulnlog 是一个围绕基于 YAML 的漏洞定义文件构建的 CLI 应用程序,旨在运行于你的 CI 流水线中。它是开源的,
并采用 Apache-2.0 许可证授权。
## 一次分析,多方受众
你只需对漏洞发现进行一次分析。Vulnlog 会以各方能够理解的形式,将判定结果传达给每一个需要的人:
- **你的团队**:分析过程、判定结果和理由保存在仓库中,并在 pull request 中进行审查,因此决策具有持久
性,且不会被反复推翻。
- **你的扫描器**:生成 Trivy、Snyk 和通用的抑制/忽略文件(抑制可以是临时的并自动过期;计划支持机读
VEX),从而让 CI 对已处理的漏洞发现保持绿灯状态。
- **你的利益相关者和客户**:一份已发布的 HTML 漏洞报告可以解答“你受到 X 的影响吗?”这类问题,而无需
将工程师从他们的工作中拉出来。
并且,由于每个判定结果都是具有记录历史且可由 CLI 读取的结构化数据,Vulnlog 为接下来的工作奠定了基础:
在你的 CI 流水线中进行自动化、AI 辅助的漏洞分拣。
## Vulnlog 适合谁?
| 受众 | Vulnlog 为他们提供了什么 |
|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
| **软件维护者** | 系统化、一致地分拣已报告的漏洞,并将分析和影响判定记录在代码旁边。 |
| **产品经理和负责人** | 包含所有漏洞发现和判定结果的 HTML 漏洞报告,用于规划修复发布并跟踪产品的安全状态。 |
| **客户和消费者** | 已发布的报告,展示哪些漏洞影响了软件、它们的影响以及修复它们的版本。 |
| **SCA 扫描器**(Snyk、Trivy) | 最新的抑制/忽略文件,以便 CI 扫描保持绿灯状态,且不会重新报告已知或无关的漏洞发现。 |
## 为什么使用 Vulnlog?
以 **Log4Shell**([CVE-2021-44228](https://en.wikipedia.org/wiki/Log4Shell))为例。Acme 销售一款基于 JVM 的
Wiki 产品,该产品依赖 Log4J 库,并在 CI 中每晚运行两个 SCA 扫描器(Trivy 和 Snyk)。当
研究人员披露 Log4Shell 且 Acme 的下一次扫描将其标记为严重时,Vulnlog 将此过程转变为一个工作流:
1. 工程师审查该漏洞对 Wiki 的影响,记录分析和判定结果,并在 Git 仓库的 **Vulnlog YAML** 文件中添加一个
临时的为期三天的抑制规则。
2. 下一次 CI 运行会调用 **Vulnlog CLI**,重新生成 Trivy 和 Snyk **抑制/忽略文件**以及一份新的
HTML **漏洞报告**。
3. 产品经理阅读该报告,并规划一个包含已修复 Log4J 依赖项的版本发布。
4. Acme 的客户提交了支持工单;支持团队直接根据已发布的报告进行回复,而无需
让工程师介入。
## 快速开始
### 安装 CLI
安装脚本会检测你的操作系统和架构,并安装原生二进制文件:
```
curl -fsSL vulnlog.dev/install | sh
```
在 macOS 上,通过 Homebrew tap 安装:
```
brew install vulnlog/vulnlog/vulnlog
```
或者拉取 Docker 镜像:
```
docker pull ghcr.io/vulnlog/vulnlog:latest
```
要将 Vulnlog 集成到 Gradle 构建中,请添加该插件:
```
plugins {
id("dev.vulnlog") version "
"
}
```
原生二进制文件和 JVM 发行版也发布在
[releases 页面](https://github.com/vulnlog/vulnlog/releases)。有关所有
选项(包括从源码构建),请参阅
[安装文档](https://vulnlog.dev/docs/vulnlog/0.14.0/installation.html)。
### 脚手架生成新的 Vulnlog 文件
```
vulnlog init --organization "Acme Corp" --name "Acme Web App" --author "Security Team" -o vulnlog.yaml
```
这将创建一个你可以开始编辑的最小化 `vulnlog.yaml` 文件。
### 编写你的第一个条目
Vulnlog 文件是纯 YAML。这是一个最小化的示例:
```
# $schema: https://vulnlog.dev/schema/vulnlog-v1.json
---
schemaVersion: "1"
project:
organization: Acme Corp
name: Acme Web App
author: Security Team
releases:
- id: 1.0.0
published_at: 2026-01-15
vulnerabilities:
- id: CVE-2026-1234
description: Remote code execution in example-lib
releases: [1.0.0]
packages: ["pkg:npm/example-lib@2.3.0"]
reports:
- reporter: trivy
analysis: >-
The vulnerable code path is not reachable in our application because we only use
the safe subset of the API.
verdict: not affected
justification: vulnerable code not in execute path
```
### 验证并生成抑制文件和 HTML 报告
```
# 检查文件是否存在错误
vulnlog validate vulnlog.yaml
# 为 1.0.0 版本生成 Trivy suppression 文件
vulnlog suppress vulnlog.yaml --reporter trivy --release 1.0.0
# 生成 HTML 报告
vulnlog report vulnlog.yaml
```
## 文档
- [文档](https://vulnlog.dev/docs/)
- [项目网站](https://vulnlog.dev/)
- [更新日志](CHANGELOG.md)
- [获取帮助](SUPPORT.md)
## 贡献
欢迎贡献!无论是 bug 报告、文档修复还是新功能——请查看
[CONTRIBUTING.md](CONTRIBUTING.md) 以开始。如果你想找点事情做,可以寻找
标记为 **good first issue** 的问题。
⭐ 如果你觉得 Vulnlog 有用,在 GitHub 上给它加星有助于其他人发现这个项目。
Vulnlog 的贡献者:
标签:GPT, LNA, 代码即安全, 文档结构分析, 漏洞管理, 请求拦截