gcve-eu/gcve-eu-ai-extension
GitHub: gcve-eu/gcve-eu-ai-extension
该工具利用本地 Ollama 大语言模型为 CVE/GCVE 漏洞记录自动生成分析师视角的摘要、建议与严重性富化信息。
Stars: 2 | Forks: 0
# AI 辅助漏洞信息标注
一个小型 Python 实用工具,用于根据标识符从 `db.gcve.eu` 获取漏洞信息,使用可配置的本地 Ollama 模型生成面向分析师的摘要和建议,并使用 [GCVE AI 来源元数据](https://gcve.eu/bcp/extension/gcve-bcp-05-x-01/)扩展返回的漏洞记录。
生成的丰富信息将添加到以下位置:
```
x_gcve[].extensions["local-ai-vulnerability-enrichment"]
```
AI 来源标注遵循 [GCVE BCP-05-X-01](https://gcve.eu/bcp/extension/gcve-bcp-05-x-01/) 扩展,并添加到以下位置:
```
x_gcve[].extensions["bcp-05-x-01"].ai_annotations[]
```
## 功能
- 从 `https://db.gcve.eu` 获取漏洞记录
- 接受 CVE ID 或 GCVE ID
- 使用可配置的 Ollama endpoint 和模型
- 生成:
- 简明的漏洞摘要
- 实用的建议
- 置信度级别
- 注意事项
- 使用 [GCVE BCP-05-X-01](https://gcve.eu/bcp/extension/gcve-bcp-05-x-01/) 扩展添加 AI 来源信息
- 输出适合使用 `jq` 等工具进行进一步处理的 JSON
## 要求
- Python 3.10+
- 运行中的 Ollama 实例
- 适合进行摘要的本地 Ollama 模型
- `requests`
- 可选:用于美观打印输出的 `jq`
安装 Python 依赖项:
```
pip install requests
```
单独安装并运行 Ollama,然后拉取模型,例如:
```
ollama pull qwen3.6:35b
```
如果愿意,您可以使用其他模型。
## 基本用法
```
python3 summarize.py CVE-2026-0300
```
使用 `jq` 美观打印结果:
```
python3 summarize.py --ollama-think=true CVE-2026-0300 | jq .
```
按 GCVE ID 获取:
```
python3 summarize.py --ollama-think=true GCVE-1-2026-0001 | jq .
```
## 配置
该脚本可以通过命令行选项或环境变量进行配置。
典型的命令行选项:
```
python3 summarize.py \
--base-url https://db.gcve.eu \
--ollama-url http://localhost:11434 \
--model qwen3.6:35b \
--gna-source 65535 \
--ollama-think=true \
CVE-2026-0300
```
典型的环境变量:
```
export GCVE_BASE_URL="https://db.gcve.eu"
export OLLAMA_URL="http://localhost:11434"
export OLLAMA_MODEL="qwen3.6:35b"
python3 summarize.py CVE-2026-0300 | jq .
```
## Ollama 思考模式
对于支持思考或推理模式的 Ollama 模型,请使用:
```
--ollama-think=true
```
示例:
```
python3 summarize.py --ollama-think=true CVE-2026-0300 | jq .
```
如果所选模型不支持思考模式,请禁用它:
```
python3 summarize.py --ollama-think=false CVE-2026-0300 | jq .
```
## 丰富信息输出示例
该脚本保留原始的漏洞记录,并附加一个类似于以下内容的 `x_gcve` 扩展块(扩展 [GCVE-BCP-05-x-01](https://gcve.eu/bcp/extension/gcve-bcp-05-x-01/)):
```
{
"x_gcve": [
{
"extensions": {
"bcp-05-x-01": {
"ai_annotations": [
{
"ai_level": "generated",
"description": "A locally configured Ollama LLM generated an analyst-oriented summary and recommendation from the fetched vulnerability record. The script does not independently verify the generated content.",
"field_name": "x_gcve.extensions.local-ai-vulnerability-enrichment",
"models": [
{
"identifier": "qwen3.6:35b",
"name": "qwen3.6:35b",
"provider": "local",
"gna_source": 65535
}
],
"review_status": "none",
"scope": "field",
"tags": [
"ai-computer-assisted:assistance-level=\"ai-generated\"",
"ai-computer-assisted:review-level=\"unreviewed\""
]
}
]
},
"local-ai-vulnerability-enrichment": {
"caveats": [
"The specific vulnerability type and CVSS score are not stated in the source record.",
"The inclusion of Siemens RUGGEDCOM APE1808 alongside Palo Alto Networks products requires verification of scope."
],
"confidence": "high",
"generated_at": "2026-05-17T13:26:12+00:00",
"recommendation": "Upgrade PAN-OS to 12.1.7, 11.2.12, 11.1.15, or 10.2.18-h6, or the latest corresponding hotfixes. Disable the User-ID Authentication Portal or remove response pages from external-facing interface management profiles if not required. Apply patches immediately given active exploitation.",
"summary": "CVE-2026-0300 affects Palo Alto Networks PAN-OS on PA-Series and VM-Series firewalls configured with the User-ID Authentication Portal enabled and an external-facing interface management profile with response pages. It is actively exploited and has a total technical impact. Affected versions include PAN-OS 12.1.0–12.1.4-h4, 11.2.0–11.2.10-h5, 11.1.0–11.1.13-h4, and 10.2.0–10.2.17, plus specific hotfix branches. Supplier data also lists Siemens RUGGEDCOM APE1808 as affected.",
"vulnerability_id": "CVE-2026-0300"
}
}
}
]
}
```
## 输出字段
### local-ai-vulnerability-enrichment
此扩展包含生成的内容:
| 字段 | 描述 |
| --- | --- |
| `vulnerability_id` | 用户请求的 CVE 或 GCVE ID |
| `summary` | LLM 生成的漏洞摘要 |
| `recommendation` | LLM 生成的修复或缓解建议 |
| `confidence` | 模型返回的置信度估计 |
| `caveats` | 生成输出中已知的限制或不确定性 |
| `generated_at` | 生成丰富信息时的 UTC 时间戳 |
### bcp-05-x-01
此扩展包含 AI 来源元数据:
| 字段 | 描述 |
| --- | --- |
| `ai_level` | AI 参与的程度,例如 `generated` |
| `description` | 对 AI 生成的丰富信息的人类可读描述 |
| `field_name` | 在 AI 协助下生成的字段或扩展 |
| `models` | Ollama 模型元数据 |
| `review_status` | 人工审查状态,例如 `none` |
| `scope` | 标注范围,例如 `field` |
| `tags` | 机器可读的 AI 协助和审查标签 |
## 推荐工作流
生成包含丰富信息的记录:
```
python3 summarize.py --ollama-think=true CVE-2026-0300 > enriched.json
```
检查 AI 生成的字段:
```
jq '.x_gcve[]?.extensions["local-ai-vulnerability-enrichment"]' enriched.json
```
检查 BCP-05-X-01 AI 标注:
```
jq '.x_gcve[]?.extensions["bcp-05-x-01"].ai_annotations[]' enriched.json
```
## 重要提示
生成的摘要和建议由本地配置的 LLM 生成。它们应被视为对分析师的辅助,而不是权威的漏洞情报。
在将生成的建议投入实际运营使用之前,请务必查阅原始的漏洞记录和上游供应商的公告。
## VLAI 严重性丰富信息脚本
`bin/vlai_severity.py` 中提供了第二个脚本,用于利用 Vulnerability-Lookup VLAI API (`/api/vlai/severity-classification`) 推断出的严重性来丰富漏洞记录,并附加 `bcp-05-x-01` AI 标注。
示例:
```
python3 bin/vlai_severity.py CVE-2026-0300 | jq .
# 可选:覆盖 BCP metadata 中的标准 gna_source 值
python3 bin/vlai_severity.py --gna-source 1234 CVE-2026-0300 | jq .
```
这会将一个扩展块写入以下位置:
- `x_gcve[].extensions["vlai-severity-enrichment"]`
- `x_gcve[].extensions["bcp-05-x-01"].ai_annotations[]`
## 针对完整 cvelistV5 转储的 VLAI 严重性丰富信息
使用 `bin/vlai_severity_dump.py` 处理完整的 `cvelistv5.ndjson` 转储,并使用与 `CVEProject/cvelistV5` 相同的目录布局输出包含丰富信息的 JSON 文件:
- `/cves///CVE-YYYY-NNNN.json`
- bucket 格式为 `xxx`(例如,`CVE-2026-12345` -> `cves/2026/12xxx/CVE-2026-12345.json`)
示例:
```
python3 bin/vlai_severity_dump.py --output-dir /tmp/cvelistv5-ai --continue-on-error
```
实用选项:
- `--limit N` 仅处理前 N 条记录(适合测试)
- `--dump-url` 覆盖源转储 URL
- `--dump-file /path/to/cvelistv5.ndjson` 从本地文件读取源转储,而不是下载
- `--vlai-base-url` 覆盖 VLAI API 基础 URL
## VLAI 严重性本地 GPU/CPU 基准测试
使用 `bin/vlai_severity_benchmark.py` 获取与 `bin/vlai_severity_latest.py` 相同的最新漏洞记录,并比较在 CUDA GPU 上进行本地 transformer 推理的速度与仅使用 CPU 的推理速度。基准测试排除了网络获取时间,仅对 VLAI 严重性分类器的本地模型推理进行计时。
示例:
```
python3 bin/vlai_severity_benchmark.py --limit 20 --warmup 1 --repeat 3
```
实用选项:
- `--local-model` 覆盖 Hugging Face 模型(默认:`CIRCL/vulnerability-severity-classification-roberta-base`)
- `--gpu-device` 选择在安装了多个 GPU 时要对哪个 CUDA GPU 索引进行基准测试
- `--warmup` 在测量每个后端之前运行不计时的推理过程
- `--repeat` 对获取的记录进行多次计时的过程,以获得更稳定的平均值
- `--continue-on-error` 跳过无法获取或未包含可用描述的记录
输出是一个 Markdown 表格,包含总时间、每次推理的耗时、吞吐量以及相对于 CPU 基准的 GPU 加速比。
标签:AI风险缓解, C2, GPT, LLM评估, LSASS转储, Ollama, Python, 人工智能, 安全运营, 扫描框架, 无后门, 漏洞管理, 用户模式Hook绕过, 系统调用监控, 逆向工具