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 填充,否则会与『概率很低』混淆。
把概率当作确定性结论会导致误判:高分表示更值得优先关注,不代表一定被利用,也不代表低分可以长期搁置。