揭示真实 Java 项目中隐蔽的易受攻击依赖关系
软件工程
2026-02-02 v1 密码学与安全
摘要
开源软件 (OSS) 依赖是现代软件代码库的主要组成部分。使用经过验证和充分测试的 OSS 组件可让开发人员减少开发时间和成本,同时提高质量。然而,对开源软件的重度依赖也会引入显著的安全风险,包括将已知漏洞纳入代码库。为缓解这些风险,已develop出基于元数据的依赖扫描器(轻便且快速)和基于代码的扫描器(可检测被元数据方法隐藏的已修改依赖)。本文提出了 Unshade,一种面向 Java 的混合方法,结合了基于元数据的扫描效率与基于代码的方法检测已修改依赖的能力。Unshade 首先通过基于字节码的指纹机制识别已修改和隐藏的依赖,然后将其补充后的软件账单清单 (SBOM) 提交给基于元数据的漏洞扫描器,以识别声明依赖和新发现依赖中的已知漏洞。凭借 Unshade 的高可扩展性,我们对 GitHub 上最流行的 1,808 个开源 Java Maven 项目进行了大规模研究。结果表明,近 50% 的项目包含至少一个与已知漏洞相关的已修改、隐藏依赖。平均而言,每个受影响项目包括超过八个此类隐藏易受攻击依赖,传统的基于元数据的扫描器会全部漏检。总体而言,Unshade 发现了 7,712 个在隐藏依赖中唯一的 CVE,这些漏洞如果仅依赖基于元数据的扫描将保持 undetected。
引用
@article{arxiv.2601.23020,
title = {Uncovering Hidden Inclusions of Vulnerable Dependencies in Real-World Java Projects},
author = {Stefan Schott and Serena Elisa Ponta and Wolfram Fischer and Jonas Klauke and Eric Bodden},
journal= {arXiv preprint arXiv:2601.23020},
year = {2026}
}