首页/安全/漏洞与攻击面速查/EPSS API 查询方法
漏洞基础与评分46 条

EPSS API 查询方法

EPSS 提供公开 REST API,可按 CVE 编号查询当前或历史概率值,适合与企业漏洞台账、报表系统集成做批量打分。

漏洞与攻击面速查安全更新于 2026-10-13

EPSS API 是什么

EPSS(Exploit Prediction Scoring System)由 FIRST 维护,为每个编号漏洞给出未来 30 天内被利用的概率估计值与对应的百分位。它提供公开的 REST 接口,可以按编号查询当前值或历史某一天的值,适合集成到漏洞台账与报表系统中做批量打分。与 CVSS 的区别在于视角:CVSS 描述漏洞有多严重,EPSS 估计它有多可能被真正利用,两者结合才能把有限的修复资源放在最该放的地方。

基本信息

提供方FIRST(Forum of Incident Response and Security Teams)
接口形式公开 REST API,支持单条与批量查询
返回字段cve、epss 概率值、percentile 百分位、date
典型用法与资产台账结合,作为修复优先级排序输入

典型使用场景

  • 漏洞入库时自动补打 EPSS 分数,作为排序依据之一
  • 每日批量刷新已登记问题的分数,捕捉被利用概率的上升
  • 查询历史某天的分数,复盘当时的决策依据是否合理
  • 与已知被利用清单结合使用:概率高且已确认利用的优先处置
  • 在多源数据整合中作为独立维度,避免只用严重性排序

单条查询

单条查询
curl -s "https://api.first.org/data/v1/epss?cve=CVE-2021-44228" | jq '.data[0]'

# 返回示例结构:
# { "cve": "CVE-2021-44228", "epss": "0.97", "percentile": "0.999" }
# 注意 epss 与 percentile 都是字符串,需要转换为数值再比较

批量与历史查询

批量与历史查询
# 批量查询多个编号
curl -s "https://api.first.org/data/v1/epss?cve=CVE-2021-44228,CVE-2017-0144" \
  | jq '.data[] | {cve, epss, percentile}'

# 查询历史某一天的分数(用于复盘)
curl -s "https://api.first.org/data/v1/epss?cve=CVE-2021-44228&date=2024-01-10" \
  | jq '.data[0]'

# 本地缓存每日结果,避免每次报表都重新请求

返回字段读法

字段含义使用注意
cve漏洞编号无对应记录时返回空 data 数组
epss未来 30 天被利用的概率字符串类型,比较前先转数值
percentile在所有编号中的相对位置与概率含义不同,报表中不要混用
date数据日期历史查询时用于确认时点
批量脚本建议本地缓存每日结果:未评分的编号可能返回空数组,按无评分处理即可,不要用 0 填充,否则会与『概率很低』混淆。
把概率当作确定性结论会导致误判:高分表示更值得优先关注,不代表一定被利用,也不代表低分可以长期搁置。

易错点

  • 返回体里的 epss 是字符串,比较前未转换类型,排序结果错乱
  • percentile 与概率含义不同,报表里混用导致结论偏差
  • 未评分编号被填成 0:与低概率混淆,台账中无法区分『未知』与『概率很低』
  • 只依赖 EPSS 不看资产暴露面:低概率但公网可达且影响核心业务的问题被排到末位

数据来源与参考

  • FIRST EPSS API 文档(api.first.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌