بنقرة واحدة
vulnerability-db
SQLite 漏洞数据库 Schema、vuln-db Tool API 参考、各 Agent 交互模式。所有参与漏洞扫描的 Agent 应参考此 Skill 来读写漏洞数据。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
SQLite 漏洞数据库 Schema、vuln-db Tool API 参考、各 Agent 交互模式。所有参与漏洞扫描的 Agent 应参考此 Skill 来读写漏洞数据。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | vulnerability-db |
| description | SQLite 漏洞数据库 Schema、vuln-db Tool API 参考、各 Agent 交互模式。所有参与漏洞扫描的 Agent 应参考此 Skill 来读写漏洞数据。 |
漏洞数据存储在 SQLite 数据库中({CONTEXT_DIR}/scan.db)。所有漏洞的读写通过 vuln-db 工具进行,该工具以 command 参数区分操作类型。
DB_PATH = {CONTEXT_DIR}/scan.db = {SCAN_OUTPUT}/.context/scan.db
此路径由 Orchestrator 在调用每个子 Agent 时传递。
存储所有漏洞数据(候选阶段 + 验证阶段)。
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id | TEXT PK | - | 漏洞唯一标识,如 VULN-DF-MEM-001 |
phase | TEXT | 'candidate' | 生命周期阶段:candidate(Scanner 写入)、verified(Verification 更新) |
source_agent | TEXT | - | 发现漏洞的 Scanner:dataflow-scanner 或 security-auditor |
source_module | TEXT | NULL | 所属扫描模块名称 |
type | TEXT | NULL | 漏洞类型:buffer_overflow、use_after_free、command_injection 等 |
cwe | TEXT | NULL | CWE 编号,如 CWE-120 |
severity | TEXT | NULL | Scanner 评估的严重性:Critical/High/Medium/Low |
description | TEXT | NULL | 漏洞描述 |
file | TEXT | NULL | 漏洞所在文件(相对于 PROJECT_ROOT) |
line_start | INTEGER | NULL | 起始行号 |
line_end | INTEGER | NULL | 结束行号 |
function_name | TEXT | NULL | 所在函数名 |
code_snippet | TEXT | NULL | 漏洞代码片段 |
data_flow | TEXT | NULL | 数据流路径(自由文本) |
pre_validated | INTEGER | 0 | 是否通过预验证 |
cross_module | INTEGER | 0 | 是否为跨模块漏洞 |
modules_involved | TEXT | NULL | 涉及的模块列表(JSON 数组字符串) |
confidence | INTEGER | NULL | 置信度评分 0-100(Verification 填写) |
status | TEXT | NULL | 验证状态:CONFIRMED/LIKELY/POSSIBLE/FALSE_POSITIVE(Verification 填写) |
original_severity | TEXT | NULL | 验证前的原始严重性(Verification 填写) |
verified_severity | TEXT | NULL | 验证后重评估的严重性(Verification 填写) |
scoring_details | TEXT | NULL | 评分明细(JSON 对象字符串,详见 @skill:confidence-scoring) |
veto_applied | INTEGER | 0 | 是否被一票否决 |
veto_reason | TEXT | NULL | 否决原因:chain_broken/unreachable/test_code |
verification_reason | TEXT | NULL | 验证结论说明 |
control_flow | TEXT | NULL | 控制流路径 |
mitigations_found | TEXT | NULL | 发现的缓解措施(JSON 数组字符串) |
source_agents | TEXT | NULL | 来源 Agent 列表(JSON 数组,去重后可能有多个) |
dedup_kept | INTEGER | 1 | 去重后是否保留(0=已合并到其他条目) |
merged_into | TEXT | NULL | 合并到的目标漏洞 ID |
created_at | TEXT | datetime('now') | 创建时间 |
updated_at | TEXT | datetime('now') | 更新时间 |
| 字段 | 类型 | 说明 |
|---|---|---|
key | TEXT PK | 元数据键 |
value | TEXT | 元数据值 |
| 字段 | 类型 | 说明 |
|---|---|---|
id | INTEGER PK | 自增 ID |
agent_name | TEXT | Agent 名称 |
module_name | TEXT | 模块名称 |
phase | TEXT | 所处阶段 |
status | TEXT | 执行状态 |
message | TEXT | 日志消息 |
item_count | INTEGER | 处理条目数 |
created_at | TEXT | 记录时间 |
Scanner 发现 ──(insert)──→ phase='candidate'
│
Verification dedup ───────→ dedup_kept=0 (重复项)
│
Verification worker ──(update)──→ phase='verified'
├── status=CONFIRMED (confidence ≥ 80)
├── status=LIKELY (60 ≤ confidence < 80)
├── status=POSSIBLE (40 ≤ confidence < 60)
└── status=FALSE_POSITIVE (confidence < 40 或 veto)
初始化数据库,创建表和索引。Orchestrator 在扫描开始时调用一次。
vuln-db command=init db_path={CONTEXT_DIR}/scan.db
批量插入候选漏洞。Scanner Worker 完成模块扫描后调用。
vulnerabilities 参数为 JSON 数组字符串,每个对象必须包含 id、source_agent、source_module。
vuln-db command=insert db_path={DB_PATH} vulnerabilities='[
{
"id": "VULN-DF-MEM-001",
"source_agent": "dataflow-scanner",
"source_module": "内存管理模块",
"type": "buffer_overflow",
"cwe": "CWE-120",
"severity": "Critical",
"file": "src/memory/allocator.c",
"line_start": 150,
"line_end": 155,
"function": "alloc_buffer",
"description": "...",
"code_snippet": "...",
"data_flow": "src/input.c:50 read_input() [SOURCE]\nsrc/memory/allocator.c:120 process_data()\nsrc/memory/allocator.c:150 alloc_buffer() [SINK]",
"pre_validated": true
}
]'
按条件查询漏洞,返回 JSON 数组。
vuln-db command=query db_path={DB_PATH} phase=candidate source_module=内存管理模块
vuln-db command=query db_path={DB_PATH} phase=verified exclude_status=FALSE_POSITIVE min_confidence=40
vuln-db command=query db_path={DB_PATH} ids=VULN-DF-MEM-001,VULN-DF-MEM-002
返回值为 JSON 数组字符串,已自动解析 scoring_details 等 JSON 字段。data_flow 为纯文本,直接返回。
更新单个漏洞的验证结果,自动将 phase 设为 verified。
vuln-db command=update db_path={DB_PATH} id=VULN-DF-MEM-001 fields='{
"confidence": 85,
"status": "CONFIRMED",
"original_severity": "Critical",
"verified_severity": "Critical",
"scoring_details": {"base": 30, "reachability": 25, "controllability": 15, "mitigations": -5, "context": 10, "cross_file": 10},
"veto_applied": false,
"verification_reason": "..."
}'
批量更新多个漏洞。Verification Worker 完成批次验证后调用。
vuln-db command=batch-update db_path={DB_PATH} updates='[
{"id": "VULN-DF-MEM-001", "fields": {"confidence": 85, "status": "CONFIRMED", ...}},
{"id": "VULN-DF-MEM-002", "fields": {"confidence": 20, "status": "FALSE_POSITIVE", "veto_applied": true, "veto_reason": "test_code"}}
]'
对所有 phase=candidate 的漏洞按 (file, line_start, function_name, type) 去重。保留 severity 最高的条目,将其他条目标记为 dedup_kept=0 并合并 source_agents。
Verification Coordinator 在分批调度前调用一次。
vuln-db command=dedup db_path={DB_PATH}
获取聚合统计信息,可选按 phase 过滤。
vuln-db command=stats db_path={DB_PATH} phase=verified
返回按 status、severity、module 分组的计数。
记录 Agent 执行事件。
vuln-db command=log db_path={DB_PATH} agent_name=dataflow-scanner module_name=内存管理模块 phase=scanning status=success item_count=8
将查询结果导出为 JSON 文件(调试/兼容用途)。
vuln-db command=export-json db_path={DB_PATH} phase=verified exclude_status=FALSE_POSITIVE output={CONTEXT_DIR}/verified_export.json
1. vuln-db init → 创建数据库
2. 调用 Architecture(输出 project_model.json、call_graph.json,不涉及 DB)
3. 并行调用 Scanner,传递 DB_PATH
4. 调用 Verification,传递 DB_PATH
5. 调用 Details Analyzer,传递 DB_PATH(无 CONFIRMED 漏洞时可跳过)
6. 调用 Reporter,传递 DB_PATH
7. vuln-db stats → 获取最终统计
1. 读取源代码 + project_model.json + call_graph.json
2. 扫描发现漏洞
3. vuln-db insert → 写入候选漏洞
4. vuln-db log → 记录完成状态
1. 读取 project_model.json 获取模块列表
2. 调度 module-scanner Worker(传递 DB_PATH)
3. 跨模块分析 → vuln-db insert(cross_module=true)
4. vuln-db stats phase=candidate → 验证结果完整性
1. vuln-db dedup → 去重
2. vuln-db query phase=candidate → 获取待验证列表
3. 按 source_module 分组
4. 调度 verification-worker(传递 DB_PATH + 漏洞 ID 列表)
5. vuln-db stats phase=verified → 汇总验证结果
1. vuln-db query ids=ID1,ID2,... → 获取分配的漏洞批次
2. 逐个验证(读取源代码、调用图、评分)
3. vuln-db batch-update → 写回验证结果
4. vuln-db log → 记录完成状态
1. report-generator → 程序化生成两份报告(report_confirmed.md + report_unconfirmed.md)
2. 读取已确认报告骨架
3. 为已确认报告添加执行摘要、深度分析、修复建议
1. vuln-db query status=CONFIRMED → 获取已确认漏洞列表
2. 读取 call_graph.json + project_model.json
3. 为每个漏洞调度 @details-worker
4. 不写入数据库(只读)
1. vuln-db query ids={VULN_ID} → 获取单个漏洞详情
2. 读取源代码进行深度利用分析
3. 判定为误报 → 跳过,不写文件
4. 判定为真实漏洞 → 写入 {SCAN_OUTPUT}/details/{VULN_ID}.md
5. 不写入数据库(只读)