copyleftdev/vulngraph-data

GitHub: copyleftdev/vulngraph-data

一条确定性数据流水线,将多个漏洞数据源标准化为可重现、带校验和的图数据库发布制品。

Stars: 0 | Forks: 0

# VulnGraph 数据 **[VulnGraph](https://github.com/copyleftdev/vulngraph) 背后的确定性数据流水线。** [![打赏我的 token](https://tokentip.to/badge/copyleftdev.svg?logo=1)](https://tokentip.to/@copyleftdev) [![release](https://img.shields.io/badge/release-data--20260721-0969da)](https://github.com/copyleftdev/vulngraph-data/releases/latest) [![snapshot](https://img.shields.io/badge/snapshot-41ee5fbb-8250df)](https://github.com/copyleftdev/vulngraph-data/releases/latest) [![graph](https://img.shields.io/badge/graph-541%2C550_nodes_%2F_751%2C324_edges-1f6feb)](https://github.com/copyleftdev/vulngraph-data/releases/latest) [![sources](https://img.shields.io/badge/sources-11-2ea44f)](docs/data-releases.md) [![reproducible](https://img.shields.io/badge/builds-byte--identical-2ea44f)](.claude/rules/determinism.md) [![engine pin](https://img.shields.io/badge/engine-engine--v0.1.0-b7410e)](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, 可复现构建, 可视化界面, 安全数据源, 数据处理流水线, 漏洞情报, 网络流量审计, 通知系统