Conrad Challenge Archive 2024 — 2026

C03

把 SBOM 漏洞清单压缩成“本产品真能走到的调用路径”

Reachability-First SBOM Triage for Small Software Teams

推荐优先级 ★★★★☆软件供应链与工作流族原型 D+A资源:纯笔记本技能:程序分析 + 软件工程建议 2–3 人

1 · 创新命题

面向没有专职安全工程师的小型开源维护者,做一个 SBOM 漏洞分诊器:不再把扫描器发现的每个 CVE 都当作同等紧急,而是结合依赖路径、入口可达性、CISA KEV 与 EPSS 证据,输出“本构建中可触达、 已有利用、应先修”的短清单;相对 Grype/Dependency-Track 的原始告警,减少无效人工复核而不漏掉 公开已利用漏洞。 EN A reachability-first SBOM triage tool for small maintainers that combines dependency paths, call reachability, CISA KEV and EPSS to turn a scanner’s CVE flood into a short, auditable fix-first list without hiding known-exploited vulnerabilities.

2 · 背景与空白

Syft 可生成 SBOM,Grype、OSV-Scanner 与 OWASP Dependency-Track 能映射漏洞;但版本命中并不等于 受影响函数在产品中可达。商业 Snyk/Endor Labs 提供不同程度的优先级与 reachability,具体能力随 语言和套餐变化,需核实。学术 Vulas(SAP)研究过基于代码的漏洞可达性。空白在:小团队需要 一个公开、可解释、把“代码可达 + 在野利用 + 修复成本”合成决策的基线,而不是又一份 CVE 列表。 课题重点是分诊质量与节省时间,不声称比所有商业 SCA 覆盖更广。

3 · 可检验假设

H1 在带已知易受攻击/不可达依赖的公开项目集上,reachability-first 分诊相对纯 CVSS 排序将 前 20 条中的真实可行动项精确率提高 ≥ 20 个百分点,同时对 KEV 条目的召回保持 100%。 H2(采纳)≥ 8 名开发者在盲测中用该清单完成首个正确修复决策的中位时间比 Grype 原始输出缩短 ≥ 30%,且能复述每条排序的证据链。

4 · 量化验收标准

  1. 【方法学校验 · 硬门槛】 用自建分析复现 OWASP Benchmark、Juliet 或 Vulas 论文中至少 20 个公开依赖/调用可达算例,reachable/unreachable 判定与参考标签一致率 ≥ 90%。 此条不过,后续全部结论无效。
  2. ≥ 30 个固定版本开源项目、≥ 100 个已核实漏洞—构建对;标签由补丁 diff、测试或论文证据确定, 不把扫描器自己的输出当真值。
  3. 极不平衡排序任务报 PR-AUC、top-k 精确率、KEV 召回与误降级数,明确不报 accuracy;按项目 划分训练/测试,禁止同仓库不同版本跨集造成泄漏。
  4. 基线为 CVSS、EPSS、KEV-only 与 Grype 默认排序;逐项消融,证明增益来自哪条证据。
  5. 用户测试预注册任务与停止规则;重尾修复时间报中位数和四分位距,不报均值。

5 · 数据与工具

用途 来源 / 工具
SBOM/扫描 Anchore Syft、Grype,CycloneDX/SPDX;版本匹配内置,调用可达性需自己实现
漏洞证据 OSV、NVD、CISA KEV、FIRST EPSS;更新时间与字段含义需记录
公开算例 OWASP Benchmark、NIST Juliet、Eclipse Steady/Vulas 示例 —— 仅用于校验与对比,不计入本项目数据贡献
程序分析 CodeQL 免费研究用途条件 需核实,或自写语言级调用图;反射/动态加载是边界
计算 普通笔记本;先限定 Java 或 Python 单一生态,避免虚假“全语言”

能力边界:静态不可达不等于绝对不可利用,反射、插件与配置可改变路径。致命错误是把“未证明 可达”写成“安全”;界面必须显示 unknown,且 KEV 永不因可达性未知被隐藏。

标签成本也要计入:每个漏洞从扫描到人工确认、升级测试和回归失败分别计时,不能只统计列表变短。 若 reachability 省下的复核时间被构建调用图的时间抵消,产品价值即被否证。公开结果应保留被降级但 后来确认可达的反例,这些反例比总体分数更能说明工具适用边界。 所有排序都应能导出机器可读证据,方便维护者在升级后重跑,而不是接受一次性的黑箱判断。

6 · 赛季执行路径

  1. 第 1–2 周:限定单一语言,整理算例并完成方法学校验。
  2. 第 3 周:接 Syft/OSV/KEV/EPSS,冻结证据字段与排序规则。
  3. 第 4–6 周:实现调用路径和补丁函数映射;逐个核实 100 个标签。
  4. 第 7 周:按项目划分评估;第 8 周做四基线与消融。
  5. 第 9 周:构建可解释修复卡;第 10 周做开发者盲测。
  6. 第 11 周:失败案例、未知态与单位经济;第 12 周简述和演示。

7 · 新颖性边界

不声称:不发明 SBOM、SCA、CVSS 或调用图;不证明不可达漏洞永远安全;不覆盖所有语言。 已有工作:Syft/Grype、OSV-Scanner、Dependency-Track 做 SBOM 漏洞映射;SAP Eclipse Steady/Vulas 研究漏洞可达性;Snyk 与 Endor Labs 有商业优先级能力。本项目贡献是面向小团队的开源、可审计 证据融合分诊,并用人工核实标签量化“少看多少、漏掉多少”。护城河类型:工作流替换(D)+ 价格坍塌(A);壁垒在持续维护的漏洞—调用路径基准集。

8 · go/no-go

第 2 周末:若 20 个算例一致率 < 75%,具名降级为 依赖路径 reachability(只判断易受攻击包 是否进入最终构建,不做函数级调用图),仍比较告警压缩与 KEV 召回。 第 6 周末:若人工可核实标签 < 60 个,缩为一个生态的 15 个项目深测;第 10 周若决策时间未缩短 ≥ 10%,降级产品为 证据解释插件,不再声称提高效率,只验证理解度。