Limozacloud/limoza-vDB
GitHub: Limozacloud/limoza-vDB
一个多供应商漏洞聚合系统,将 20+ 来源的 CVE 和安全公告数据统一为标准 schema 并通过 GraphQL API 提供只读查询。
Stars: 0 | Forks: 0
# limoza-vDB
一个多供应商漏洞聚合系统。limoza-vDB 从 20 多个上游来源同步 CVE 和安全公告
数据,将所有内容规范化为单一的统一 schema
(即 **LVE record**),存储在 PostgreSQL 中,并通过只读的
GraphQL API 对外提供服务。
## 它的功能
- **同步 (Sync)** — 从每个供应商(CSAF、OVAL、OSV、CVRF、JSON feeds、git 仓库)下载原始数据到本地卷,并在来源支持的情况下进行增量同步。
- **转换 (Transform)** — 每个供应商模块将其源格式映射到通用的 LVE schema 上。
- **Upsert** — 单个写入器 (`ingest/db.py`) 将每个供应商的数据合并为每个漏洞一条记录,以稳定的 `LVDB-XXXXXXXX` 标识符作为主键。
- **服务 (Serve)** — Hasura 通过只读角色和 JWT token,将 PostgreSQL schema 以 GraphQL 形式对外暴露。
每个漏洞都会成为一条 **LVE record**,聚合了标题、描述、CVSS、
CWE、参考链接、安全公告、受影响/已修复的包、漏洞利用情报以及
变更历史 —— 每个字段都标记有对应的 `source` 供应商。
## 数据来源
| 类别 | 来源 |
|----------|---------|
| **Linux 发行版** | Red Hat, SUSE, Ubuntu, Debian, Alpine, AlmaLinux, Rocky Linux, Oracle Linux |
| **操作系统 / 供应商** | Microsoft MSRC |
| **CVE 基线** | NVD / MITRE |
| **包生态系统** | GitHub Security Advisories (GHSA), OSV |
| **风险评分** | FIRST EPSS, CISA KEV, CISA SSVC, BSI WID |
| **漏洞利用情报** | Exploit-DB, Metasploit, Nuclei, PoC-in-GitHub |
| **字典** | NVD CPE, CWE |
每个来源的字段映射和 schema 覆盖细节位于
[`docs/datasources/`](docs/datasources/)。Red Hat 是参考实现。
## 架构
```
sync transform upsert
vendor ─────────────▶ /data/ ─────▶ LVE record ─────▶ PostgreSQL ─────▶ Hasura GraphQL
feeds (local volume) (ingest/) (schema.sql) (read-only API)
```
Docker Compose 技术栈运行以下服务:
| 服务 | 用途 |
|---------|---------|
| `postgres` | PostgreSQL 16 — 数据库 |
| `ingest` | Python 同步/导入 CLI (基于 `Dockerfile` 构建) |
| `hasura` | 基于 schema 的 GraphQL Engine |
| `pgadmin` | 数据库界面 (仅用于开发) |
| `ofelia` | 用于同步/导入 pipeline 的 Cron 调度器 |
## 快速开始
需要 Docker 和 Docker Compose。
```
# 1. 配置环境
cp .env.template .env
# 编辑 .env:设置 POSTGRES_PASSWORD、HASURA_ADMIN_SECRET 和(推荐)NVD_API_KEY。
# 为只读 token 生成 JWT 签名密钥:
echo "HASURA_JWT_SECRET=$(openssl rand -hex 32)" >> .env
# 2. 启动 stack
docker compose up -d postgres hasura
# 3. 应用数据库 schema
docker compose run --rm ingest schema
# 4. 同步并导入数据(示例:单一 source)
docker compose run --rm ingest sync redhat
docker compose run --rm ingest import redhat
# 5. 连接 GraphQL API(一次)
docker compose run --rm ingest hasura-init
```
GraphQL endpoint 随后位于 `http://localhost:8080/v1/graphql`,Hasura
控制台位于 `http://localhost:8080/console`。
有关完整的命令参考,请参阅文档中的 **运行 limoza-vDB** 部分
([Ingest CLI](docs/running/cli.md),[Docker 技术栈](docs/running/docker.md),
[GraphQL & Hasura](docs/running/graphql.md))。
## CLI
`ingest` 容器是所有操作的入口:
| 命令 | 描述 |
|---------|-------------|
| `sync ` | 下载 / 更新一个或多个来源 (或 `all`) |
| `import ` | 将同步的数据导入数据库 (或 `all`) |
| `pipeline ` | 运行在 `config/schedule.json` 中定义的任务的同步 + 导入 |
| `schema` | 应用数据库 schema (幂等) |
| `hasura-init` | 追踪表、构建关系、授予只读角色权限 |
| `create-token [--ttl DAYS]` | 为 GraphQL API 生成只读 JWT |
| `truncate [--yes] [table...]` | 清空数据表 |
| `verify ` | 将 CVE 与上游 OSV 进行对比 |
## GraphQL API
Hasura 直接为 schema 提供服务。`readonly` 角色对所有
表拥有仅限 SELECT 的访问权限。使用以下命令生成 token:
```
docker compose run --rm ingest create-token --ttl 90
```
并将其作为 `Authorization: Bearer ` 传递。示例查询位于
[`docs/graphql-example-queries.md`](docs/graphql-example-queries.md)。
该技术栈使用了一个[自定义 Hasura 版本](docs/running/graphql.md#custom-hasura-build) — 这是
Hasura CE (Apache-2.0) 的一个 fork,增加了 `_any` / `_all` 过滤运算符,用于对字符串数组列(例如 `lve.aliases`)进行元素级别的匹配。
## 文档
文档使用 MkDocs 构建:
```
pip install mkdocs
mkdocs serve # http://127.0.0.1:8000
```
- [`docs/datasources/`](docs/datasources/) — 各来源的字段映射和 schema 覆盖范围
- [`docs/ingest/schema.md`](docs/ingest/schema.md) — LVE schema 参考
- [`docs/running/`](docs/running/cli.md) — Docker 技术栈、ingest CLI 以及 GraphQL/Hasura 用法
## 安全
切勿提交真实的 secret。`.env` 已被 git-ignore;仅 `.env.template` (包含占位符) 受到版本跟踪。所有凭证 —— 数据库密码、Hasura 管理员 secret、
JWT 签名密钥、NVD API 密钥 —— 均从环境中读取。如果您从
内部部署 fork 本项目,请在发布前**轮换所有 secret**。
## 许可证
[PolyForm Noncommercial 1.0.0](LICENSE.md) — 免费用于非商业用途、修改
和分发。本许可证未授予商业使用权限;如需商业条款,
请联系作者。
第三方软件依赖和运行时镜像已在
[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md) 中列出并致谢。
导入的**数据**携带其自身的上游许可证 —— 其中一些要求署名
(GHSA、OSV、EPSS、…)。请参阅
[源数据许可证](docs/datasources/index.md#source-data-licenses),并在重新分发其数据前查阅每个来源的条款。
标签:CVE聚合, GraphQL, PostgreSQL, 威胁情报, 开发者工具, 数据同步, 版权保护, 逆向工具