copyleftdev/vulngraph-data
GitHub: copyleftdev/vulngraph-data
一条确定性数据流水线,将多个漏洞数据源标准化为可重现、带校验和的图数据库发布制品。
Stars: 0 | Forks: 0
# VulnGraph 数据
**[VulnGraph](https://github.com/copyleftdev/vulngraph) 背后的确定性数据流水线。**
[](https://tokentip.to/@copyleftdev)
[](https://github.com/copyleftdev/vulngraph-data/releases/latest)
[](https://github.com/copyleftdev/vulngraph-data/releases/latest)
[](https://github.com/copyleftdev/vulngraph-data/releases/latest)
[](docs/data-releases.md)
[](.claude/rules/determinism.md)
[](crates/vulngraph-data/Cargo.toml)
VulnGraph Data 从原始漏洞数据源检索批量发布的数据,将其提取并标准化为 VulnGraph 二进制图数据库,然后发布可重现且经过校验的 release artifacts。它不包含查询引擎或 MCP server,且从不提供针对单个 CVE 的查询——产品是 release artifacts,而不是此代码库。
`badges:auto` 标记内的徽章是在发布时由 `scripts/update-badges.sh` 根据已发布的 `manifest.json` 生成的——这些数字代表的是实际发布情况,而非营销噱头。
## 数据集覆盖范围
| 数据源 | 贡献内容 |
|---|---|
| CVE List V5 | 359k+ CVE 记录,CVSS 提取,版本范围 |
| EPSS | 漏洞利用概率评分 + 百分位数 |
| CISA KEV | 已知漏洞利用标记 |
| ExploitDB · PoC-in-GitHub · Nuclei | 公开漏洞利用 / PoC / template 链接 |
| MITRE ATT&CK · CAPEC · CWE | 技术、攻击者、软件;CWE→ATT&CK 桥接 |
| Sigma | 检测规则链接 |
| OSV · GHSA | 安全公告、包生态系统、版本范围 |
| deps.dev | 包依赖关系边(增量更新,7天缓存) |
## 流水线
消费者使用 vulngraph 的 `scripts/update.sh` 安装 release:校验和 → 逐文件哈希验证 → `snapshot_id` 重计算 → 引擎完整性检查开启 → 原子替换。更新失败绝不会替换已验证的 snapshot。
## 确定性即是契约
相同的数据源会产生**逐字节相同**的语义文件。这使得 manifest 中的 `snapshot_id` 成为真正的内容标识,使“无更改 → 无发布”得以强制执行,并让任何消费者都能重新推导并确切审计其安装的内容。强制实现方式:
- 为两种边排序提供明确的排序比较器
- 写入磁盘的数据中不包含 HashMap 迭代顺序(采用按键排序的 JSON)
- 磁盘记录中不包含墙上时钟时间——仅使用一个由源数据修改时间(source-mtime)派生的单一构建时间戳,通过 `GraphBuilder::set_build_timestamp()` 注入
- 通过双重构建验证([规则](.claude/rules/determinism.md))
## 命令
## 制品即为产品
消费者应使用**已发布的 release**,而不是从源码构建。[vulngraph CLI](https://github.com/copyleftdev/vulngraph-cli) 通过 `vulngraph update` 安装它们;托管的 MCP server 则使用其 `update.sh` 进行安装。从源码构建此流水线还需要访问私有的 `vulngraph` 引擎代码库(一个 git 依赖);这仅在*生产* release 时需要,而在消费时绝不需要。
## 格式契约
磁盘上的二进制格式仅定义一次,位于 `vulngraph-engine` crate 中,在此处作为固定在 `engine-v*` 标签上的 git 依赖被引入。每个已发布的 manifest 都会记录 `engine_rev` 和 `format_version`;消费者会拒绝不匹配的版本,因此各代码库之间不会发生无声的偏移。公开的 [vulngraph-cli](https://github.com/copyleftdev/vulngraph-cli) 从 `manifest.rs` 中镜像了 `snapshot_id` 算法和 `SEMANTIC_FILES` —— 更改其中任何一项都属于受 `manifest_version` / `format_version` 控制的跨代码库契约变更。提升 engine pin 版本是一种刻意的格式同步行为。
采用 MIT 许可证。
发布节奏、asset 名称、manifest schema 以及客户端安装契约请见:[docs/data-releases.md](docs/data-releases.md)。
标签:Cutter, Homebrew安装, Rust, XSS, 可复现构建, 可视化界面, 安全数据源, 数据处理流水线, 漏洞情报, 网络流量审计, 通知系统