[论文解读] The Dynamics of Software Composition Analysis
本文提出了一种新颖的模块化方法,将静态调用图与动态调用图结合用于软件成分分析(SCA),以减少漏洞检测中的误报。通过整合人工校准的、与漏洞相关的接收点(sinks),结合预计算的调用链以及经过插桩的动态调用图,该方法提升了可达性分析的准确性,并实现了可扩展的、适合CI/CD流水线的依赖项修复,使真实项目中的调用图顶点数量平均增加824%,边数增加361%。
Developers today use significant amounts of open source code, surfacing the need for ways to automatically audit and upgrade library dependencies, and giving rise to the subfield of Software Composition Analysis (SCA). SCA products are concerned with three tasks: discovering dependencies, checking the reachability of vulnerable code for false positive elimination, and automated remediation. The latter two tasks rely on call graphs of application and library code to check whether vulnerability-specific sinks identified in libraries are used by applications. However, statically-constructed call graphs introduce both false positives and false negatives on real-world projects. In this paper, we develop a novel, modular means of combining call graphs derived from both static and dynamic analysis to improve the performance of false positive elimination. Our experiments indicate significant performance improvements.
研究动机与目标
- 解决软件成分分析(SCA)中静态调用图分析存在的高误报率问题,特别是由于未使用或不可达的传递依赖导致的问题。
- 通过结合静态与动态调用图,利用插桩技术捕获实际运行时行为,提升漏洞可达性检测的准确性。
- 通过预计算调用链并避免对第三方库进行动态调用图重建,实现可扩展的、模块化的CI/CD流水线分析。
- 通过结合语义差异与调用图信息,识别库升级过程中可能破坏的变更,支持自动化修复。
- 证明动态调用图相较于仅使用静态分析,能显著扩大可发现的漏洞方法调用链集合。
提出的方法
- 通过包管理器内嵌的动态分析准确发现传递依赖,避免基于静态清单解析带来的不准确。
- 在测试执行期间通过插桩构建动态调用图,仅捕获实际运行时观察到的方法调用。
- 为第三方库预计算并模块化调用链,实现复用并减少CI/CD流水线中的重复计算开销。
- 通过合并静态调用链与动态调用图来组合静态与动态调用图,仅保留第一方入口点,并支持混合路径追踪。
- 通过人工校准的、与库相关的特定接收点增强漏洞检测,提升识别可利用代码路径的精度。
- 在库版本之间使用语义差异,并结合调用图信息,以预测自动化修复过程中的破坏性变更。
实验结果
研究问题
- RQ1如何有效组合静态与动态调用图,以提升SCA中漏洞可达性检测的准确性?
- RQ2与仅使用静态分析相比,动态调用图插桩在发现漏洞方法调用链方面提升了多少?
- RQ3模块化、预计算的调用图组合策略是否能够实现适合集成到CI/CD流水线中的可扩展SCA分析?
- RQ4使用库特定的、人工校准的接收点对减少漏洞检测中的误报有多大影响?
- RQ5在真实世界的大规模Java项目中,结合动态与静态调用图的性能开销与可扩展性如何?
主要发现
- 在四个基于Maven的真实Java项目中,动态调用图平均比静态调用图多出824%的顶点和361%的边。
- 该混合方法发现了显著更多的可达漏洞方法——在某个项目(如helios)中,动态接收点高达3616个,而静态接收点仅1个。
- 该方法通过准确识别仅在生产执行路径中实际可达的库方法,减少了误报。
- 调用图的模块化组合使分析平均在数分钟内完成,使集成到CI/CD流水线成为可行。
- 测试覆盖率更高的项目生成了更大、更准确的动态调用图,从而提升了漏洞检测效果。
- 结合调用图信息的语义差异分析,提高了自动化修复的精度,能够更可靠地识别潜在的破坏性变更。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。