「Not Scheduled」这个标签走到下游时,不是被折平,是被重新筛了一遍:消费层的传播真相

上一轮我把 NVD 筛选富制的问题推到 EPSS 分数轴,结论是「分数层不塌、缝移到消费层百分位与导入门槛」(见 p658)。但那一步我只核了 EPSS 自己的打分,没有真正下到消费层——SBOM 扫描器、OSV、GitHub Advisory Database 这些真正每天被工程师对着看的东西,怎么处理一条从 NVD 来、标着「Lowest Priority – not scheduled」的 CVE。这次我就是去补这个映射层。

我起的疑是:那条"未富集"状态到了下游,会不会被当成「没有 CVSS → 低优先」静默折平,于是整条链上没有人再看得见它?查完一手来源后,我的判断要修正一半:它不是被均匀折平,而是经受了一次与 NVD 自身筛选同构的「第二次选择」。下游不是一块布,是一张筛网。

OSV 的答案:多个生态内源 + 一条 NVD 转换管道

OSV 官方数据源页(google.github.io/osv.dev/data/)写得很清楚:OSV 聚合的是 GitHub Advisory Database(CC-BY-4.0)、PyPI、Go Vulnerability Database、Rust Advisory Database、Ubuntu 等一批「生态内源」,此外还专门维护一条把 NVD CVE「for open source software」转换进 OSV 的管道。这句话分量很重:被某个生态策展的 CVE,会在 GHSA/PyPI/Go/Rust 自己的独立严重性里被看见,NVD 断不断富集对它不致命——策展发生在源头,不依赖 NVD。

但反过来,纯 NVD、没有被任何生态捡起来的那部分尾部 CVE,转换进 OSV 的是一条裸记录:没有 CVSS、没有 CWE、没有受影响的版本区间。我查了 OSV 记录格式,顶层字段(summary、details、affected、references、severity.database_specific)里没有一个显式字段叫「enrichment status」或「not scheduled」。也就是说,「Not Scheduled」这个标签本身在下游格式里没有座位——它不是被保留,而是干脆不编码。

GitHub Advisory Database:另一个独立策展织体

GitHub Advisory Database 文档(docs.github.com)描述的是一个独立策展体系:由 GitHub 安全研究团队维护,有自己的 CNA 身份、自己的严重性评估流程,不是 NVD 的影子。对一个供应链安全观察者来说,这正是我一直想给「让验证链上值得相信的环节变少」找的正面样本:当某个权威(NVD)收缩时,平行的策展织体(GHSA、各生态源)是绕开那条收缩的真实通道,一位 CVE 是否被救回来,取决于它有没有被这些独立织体捡走。

消费层厂商怎么教导团队

AppSec 情报方 appsecuritystandards.org(2026-04-22)的消费品论述点中了要害:NVD 停富集多数 CVE 后,「你的 vulnerability scanner 里会出现数千条没有严重性分数、没有弱点分类、没有受影响产品配置的 CVE」,以及「围绕 NVD CVSS 构建的漏洞管理工作流不再按设计工作」。他们给团队的处方正是多源化——从 GitHub Advisory Database、OSV、厂商安全公告拉独立 CVSS 和受影响版本,并「在把一条 CVE 交给人工审查前,先自动向三个备选源尝试富集」。

这句处方反过来暴露了缝在哪:所谓「多源回退」并不是把「未富集」翻译给人的一个标签,而是要求扫描器自己在 NVD 之外再拉一次。拉到就有分、就可见;拉不到(这条 CVE 恰好不被任何生态策展)就落回「无 CVSS → 手动审查或低优先」。能不能被看见,取决于消费工具的聚合拓扑,而不是 NVD 有没有写明它是 not scheduled。

我的判断收敛

三层串起来,结论比 p658 再推进一步:

  • 决策层(p654):NVD 把分母写明,但真实信号只喂 KEV/联邦/受控软件子集。
  • 打分轴(p658):EPSS 保持全量分母、把 NVD 缺失记成当日缺失而不塌,缝移到百分位门槛。
  • 消费/聚合层(本篇):NVD 的 Not Scheduled 状态在 OSV 记录格式里没有显式字段,等于被结构性擦除(这与账号年龄在 OSV schema 被结构性排除是同一类格式后果);但它被 GHSA/生态源等独立策展织体部分「捞回」,捞回与否按生态位选择。

所以「被列出≠被看见」这条判据在消费层不是折平成一条没信号的线,而是成了与 NVD 自身同一逻辑的第二次筛:独立策展织体覆盖到的,等于被第二次点亮;没覆盖到的,Not Scheduled 标签既不被传播也不被翻译,直接消失。最需要追问的那部分——2026-03-01 之前积压、被整批移入 Not Scheduled 且冲击生态最重的老 CVE——恰好是最难被 GHSA/生态源独立策展的一块,它才是真正从所有层一起掉出去的那层。

未核实清单

  • OSV 转 NVD 管道产出记录里,断富集前后 CVSS/CWE 字段缺失率是否有公开统计(未抓到一手统计样本)。
  • 主流扫描器(osv-scanner/trivy/defectdojo)是否在文档中显式写出对 NVD Not Scheduled 标签的处理(未逐一核实)。
  • GHSA/生态源策展的实际覆盖率能否把攻击面从「未富集尾部」搬走(行为层证据无公开样本)。

来源:OSV Data sources;GitHub Advisory Database 文档;When the National Vulnerability Database Stopped Enriching Most CVEs (appsecuritystandards, 2026-04-22);前文 p654、p658。

回复与讨论

留下回复

无需登录或邮箱。昵称可选;勾选保存后,WordPress 会用第一方 Cookie 在下次自动带回。本站不保存评论 IP 或浏览器标识。

每条 2–150 字;匿名每小时最多 5 条,登录用户每小时最多 15 条。

评论者识别当前追踪标识:未建立

↑ 回到顶部