← 最新论文
💻 computer science

A Reality Check on SBOM-based Vulnerability Management: An Empirical Study and A Path Forward

该论文通过对 2414 个开源仓库的实证研究,揭示了 SBOM 生成依赖锁文件可确保准确性,但下游漏洞扫描存在高达 92.0% 的误报率,并提出通过函数调用分析剔除不可达代码中的警报,从而构建出一种能显著降低误报、缓解开发者警报疲劳的两阶段软件供应链安全实践方案。

原作者: Li Zhou, Marc Dacier, Charalambos Konstantinou

发布于 2026-04-20
📖 1 分钟阅读☕ 轻松阅读

原作者: Li Zhou, Marc Dacier, Charalambos Konstantinou

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文就像是一次对软件安全领域的“现实体检”。它发现了一个令人震惊的真相:我们用来保护软件供应链的“安检仪”(SBOM 漏洞扫描工具),虽然看起来很先进,但实际上正在制造大量的假警报,让开发者疲于奔命,甚至可能因为太吵而忽略了真正的危险。

为了让你更容易理解,我们可以把整个软件供应链想象成开一家连锁餐厅

1. 什么是 SBOM?(餐厅的“食材清单”)

想象一下,你开了一家餐厅(软件),你的厨师(开发者)不自己种菜,而是从各种供应商那里买食材(第三方代码库/依赖包)。

  • SBOM (软件物料清单) 就是这份详细的食材采购清单。它列出了你用了什么品牌的番茄酱、哪家的牛肉、什么批次的香料。
  • 目的:如果某批牛肉(比如 Log4j 组件)被发现有沙门氏菌(漏洞),你可以通过清单迅速查出哪些餐厅用了这批牛肉,然后立刻下架,防止顾客中毒。

2. 第一个发现:清单本身写得对不对?(“手写菜单”vs“智能库存系统”)

以前的研究经常抱怨:不同的 SBOM 生成工具,对着同一个项目,列出的清单居然不一样!有的漏了,有的多了。这就像两个不同的会计,对着同一堆发票,算出来的食材数量不一样,这怎么行?

  • 论文发现:问题出在输入源上。
    • 旧方法(项目文件):就像厨师只给了会计一张手写的需求单(比如“我要一些番茄酱”)。会计得自己去猜买哪个牌子、买多少,结果大家猜的不一样,清单自然乱套。
    • 新方法(锁文件 Lock Files):就像厨师直接给了会计智能库存系统的导出单。这张单子不仅写了“番茄酱”,还精确到了“亨氏 500ml 装,批次号 12345"。
  • 结论:只要用这种精确的“智能库存单”(锁文件)作为输入,不同的 SBOM 工具列出的清单完全一致且准确。这解决了清单不准的问题。

3. 第二个发现(也是最大的震惊):清单对了,但“安检仪”还是瞎报警!

既然清单(SBOM)现在非常准确了,那拿着这份清单去查“有毒食材”(漏洞扫描),应该很准了吧?
大错特错!

  • 现状:研究人员拿着这份完美的清单,去问两个最流行的“安检仪”(Trivy 和 Grype):“这里面有有毒食材吗?”
  • 结果:安检仪大喊:“有!有!有!”它们列出了 100 个潜在的危险。
  • 真相:研究人员拿着这份清单,像侦探一样去厨房(代码)里实地检查,发现其中 92 个都是假的!
    • 为什么? 因为安检仪只看“有没有这个食材”,不看“这个食材有没有被用到”。
    • 比喻:假设你的清单里有一瓶“剧毒老鼠药”(某个有漏洞的库)。安检仪看到清单上有,就尖叫“着火了!”。但实际上,这瓶老鼠药被锁在仓库最角落的柜子里,从来没人打开过,也没人把它放进菜里。它虽然“存在”,但无法被利用,对顾客(用户)毫无威胁。
  • 后果:开发者每天收到几百条警报,大部分是这种“仓库角落的老鼠药”。久而久之,他们累了,开始无视所有警报。结果,当真正的“毒药”(真实漏洞)混进菜里时,大家反而没反应了。这就是警报疲劳

4. 解决方案:给安检仪装上“大脑”(可达性分析)

既然问题出在“只看有没有,不看用没用”,那怎么解决?

  • 论文提出的方法函数调用分析(Function Call Analysis)。
  • 比喻:给安检仪装上一个智能追踪器。它不再只看清单,而是去厨房走一圈,看看厨师到底有没有把那个“有毒食材”拿出来切、炒、拌。
    • 如果那个有毒食材在仓库里吃灰,没被用到 -> 忽略警报(这是假警报)。
    • 如果那个有毒食材正在被炒进菜里 -> 立刻报警(这是真危险)。
  • 效果:通过这种方法,研究人员成功过滤掉了 61.9% 的假警报。警报数量大幅减少,剩下的都是真正需要处理的“真凶”。

5. 总结与未来建议

这篇论文给行业提出了一个两步走的实用建议:

  1. 第一步(修好清单):别再用手写的需求单了,强制使用锁文件(Lock Files)。这能保证你的“食材清单”是 100% 准确和一致的。
  2. 第二步(升级安检仪):别只盯着清单看,要升级工具,让它们具备**“可达性分析”**的能力。只有当漏洞代码真的被“调用”时,才报警。

一句话总结
现在的软件安全工具就像是一个只会看购物小票的保安,只要小票上有“毒药”两个字,他就拉响警报,不管毒药有没有被打开。这篇论文告诉我们:先要把购物小票写对(用锁文件),然后让保安学会去现场看看毒药到底有没有被打开(做可达性分析),这样才能真正保护我们的软件安全,不让开发者在假警报中累垮。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →