漏洞

概览

公开漏洞,外加决定紧急程度的两件事:CISA 是否见过在野利用,以及被利用的概率。

状态
live
文档 id
doc_id 如 CVE-2024-3400
引用格式
[CVE-2024-3400]

常用调用

按产品找漏洞POST /v1/cve/search {"query": "palo alto globalprotect rce"}
在野利用 + 高危,按利用概率排POST /v1/cve/search {"query": "", "filters": {"kev": true, "severity": ["critical","high"]}, "sort": "epss"}
读一条GET /v1/cve/read/CVE-2024-3400 → 默认 level=detail(NVD 原文描述、CVSS 向量、CWE、KEV 与 EPSS 明细)

是词,不是意思。这个域没有向量:mode 只有 keyword,写一句话描述需求搜不出东西——要给确切的词。支持引号短语、OR、-排除;中文会分词,中英混写会自动拆成两路。

细则
  • NVD 数据按其条款使用:展示时须带「本服务未经 NVD / NIST 背书」声明(响应的 attribution 字段)。
  • kev=true 表示 CISA 确认在野利用;epss 是 FIRST 的概率估计,两者口径不同,别混用。
  • severity 是由 cvss_score 推出的,3,347 条没有分数的 CVE 这两个字段都空。
  • 按被利用风险排序:sort=epss(降序);按时间:sort=date。
  • vuln_class / attacker_needs / impact / one_liner* 是模型写的,做摘要可以,别当原文引用;原文在 detail 的 description。
  • 模型写的字段(做摘要可以,别当原文引用):affected、attacker_needs、impact、one_liner、one_liner_zh、vuln_class。
  • 字段表与枚举值由库的自描述(search.field)生成,不是手写的;枚举计数的口径是 2026-10-13。

读

GET/v1/cve/read/{doc_id}
三档深浅,不传就是 detail。免费样例:CVE-2024-3400。

三档

深浅credits返回
brief1卡片:affected、cvss_score、doc_id、epss、kev、one_liner、one_liner_zh、published…
detail (默认)2全部结构化字段(卡片 + 原文摘要 / 明细字段)

参数

参数类型说明
doc_id (path) 必填 string 文档 id(doc_id)。
level brief · detail= detail 读多深。
format json · md · html= json 响应形态。

示例

{ "domain": "cve", "id": "CVE-2024-3400", "level": "detail", "view": "detail", "data": { … } | "text": "…", "token_count": 1834, "meta": { … } }
旧写法 GET /v1/cve/doc/{id}?view=… 仍然可用。

批量读

POST/v1/cve/read
最多 50 个 id,同一档。查不到的 id 返回 error: "not_found",不扣费。

参数

参数类型说明
ids 必填 string[] 文档 id 列表。
level brief · detail= detail 所有 id 共用的档。

示例

{ "domain": "cve", "level": "detail", "docs": [ { "id": "…", "data": { … } }, { "id": "…", "error": "not_found" } ], "meta": { … } }

Facets

GET/v1/cve/facets?field={field}
某个过滤字段的合法值,agent 不用猜;预聚合字段带计数,声明的枚举没有。免费、不需要 key。

参数

参数类型说明
field 必填 severity · vuln_class 有 facets 的过滤字段。
limit integer= 50 最多返回多少个值。

示例

{ "domain": "cve", "field": "…", "values": [ { "value": "…", "count": 3120 } ], "meta": { … } }

问registered key+ /stream

POST/v1/cve/ask
本域的 agentic 问答:没有向量层,模型把问题翻成结构化筛选 + 中英分词全文检索,读详情后作答,引用写成 [cve: <标题>];/stream 为 NDJSON,answer_delta 是边生成边发的真实片段。effort low / medium / high 对应 50 / 100 / 200 credits。加 /stream 走 NDJSON,第一个事件一定是 billing。首个 answer_delta 之前失败会退款。

参数

参数类型说明
query 必填 string 1–2000 字符。问得具体;要数字就直接问数字。
effort low · medium · high= low 检索轮数,也决定价格:50 / 100 / 200 credits。套餐限制最高档。
verbose bool= false 返回工具调用轨迹(流式时多 tool_call / tool_result / thinking 事件)。
top_k integer= 10 预取候选数。
stream_answer bool= true 仅流式:false 时只发一个 answer 事件。
max_rounds integer 0–8,覆盖 effort 预设。
force_answer_after number 秒;强制切入作答阶段。
max_answer_tokens integer= 4096 触顶时置 answer_truncated。
language string 回答语言,默认跟随 query。

示例

{ "answer": "… [CVE-2024-3400] …", "sources": [ … ], "stats": { "rounds": 1, "elapsed_s": 6.2, "answer_truncated": false }, "coverage"?: { … }, "meta": { "credits": { "charged": 50, … } } }
引用是真的——answer 里的每个 id 都存在于本垂域(格式 [CVE-2024-3400])。sources 是召回集,不是引用列表。answer_truncated 表示不完整。