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, 威胁情报, 开发者工具, 数据同步, 版权保护, 逆向工具