[论文解读] Towards Reliable and Scalable Linux Kernel CVE Attribution in Automated Static Firmware Analyses
本文提出了一种可扩展的自动化方法,通过结合从二进制镜像中提取的内核构建数据,增强基于版本的匹配,以提高固件分析中Linux内核CVE归属的可靠性。通过静态分析固件以恢复内核配置和目标架构,该方法重建内核构建过程,并基于CVE描述中的文件级引用过滤CVE,从而在127个路由器固件镜像的案例研究中将误报率降低68.37%。
In vulnerability assessments, software component-based CVE attribution is a common method to identify possibly vulnerable systems at scale. However, such version-centric approaches yield high false-positive rates for binary distributed Linux kernels in firmware images. Not filtering included vulnerable components is a reason for unreliable matching, as heterogeneous hardware properties, modularity, and numerous development streams result in a plethora of vendor-customized builds. To make a step towards increased result reliability while retaining scalability of the analysis method, we enrich version-based CVE matching with kernel-specific build data from binary images using automated static firmware analysis. We open source an attribution pipeline that gathers kernel configuration and target architecture to dry build the present kernel version and filter CVEs based on affected file references in record descriptions. In a case study with 127 router firmware images, we show that in comparison to naive version matching, our approach identifies 68% of all version CVE matches as false-positives and reliably removes them from the result set. For 12% of all matches it provides additional evidence of issue applicability. For 19.4%, our approach does not improve reliability because required file references in CVEs are missing.
研究动机与目标
- 解决由于对Linux内核采用简单版本匹配而导致的大规模固件漏洞分析中误报率过高的问题。
- 在自动化静态固件分析中,提升CVE归属的可靠性,同时不牺牲可扩展性。
- 实现基于二进制内核中实际包含的组件自动过滤CVE,而非仅依赖版本号。
- 为安全分析师提供一种实用且开源的流水线,以减少固件安全评估中的手动验证工作量。
提出的方法
- 使用静态分析从二进制固件镜像中提取内核版本、目标指令集架构(ISA)和内核配置。
- 通过使用提取的配置和版本进行干构建(dry-build),重建内核构建过程,以推断哪些源文件被包含。
- 根据CVE描述是否明确引用了在重建的内核构建中不存在的文件,对CVE进行过滤。
- 将该流水线集成到FACT固件分析框架中,并作为开源工具发布,以确保可复现性。
- 使用NVD和CVE数据库记录来识别受影响文件,并与重建的内核文件集进行比对。
- 将该方法应用于127个家用路由器固件镜像的语料库,以评估其性能和可靠性提升效果。
实验结果
研究问题
- RQ1由于缺少组件存在性检查,基于版本的CVE匹配在固件中在多大程度上高估了漏洞暴露程度?
- RQ2从二进制固件中提取的内核构建元数据能否提高静态分析中CVE归属的可靠性?
- RQ3基于CVE描述的文件级过滤在减少Linux内核漏洞误报匹配方面有多有效?
- RQ4由于CVE记录中缺少文件引用,有多少比例的CVE无法被过滤,这如何影响该方法的适用性?
- RQ5在具有异构设备构建的现实固件分析场景中,所提出的流水线在可扩展性和实用性方面表现如何?
主要发现
- 在127个路由器固件镜像的案例研究中,与简单版本匹配相比,该方法将误报CVE匹配数量减少了68.37%。
- 在所有基于版本的CVE匹配中,68%的匹配被该方法正确识别为误报,方法是检测到漏洞组件未包含在内核构建中。
- 在12%的匹配中,该方法通过文件级一致性检查提供了额外的适用性证据,从而增强了归属的置信度。
- 在19.4%的匹配中,该方法无法提升可靠性,因为CVE描述中缺少文件引用,限制了其过滤能力。
- 该方法可扩展且适用于所分析的127个固件镜像中的34.64%,因为这些镜像满足内核配置提取和构建重建的技术要求。
- 该方法通过基于实际内核组成系统性地排除不适用CVE,显著减少了安全分析师的手动验证工作量。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。