分享自:

基于崩溃一致性与语义精炼的精确根本原因分析:ASRCA框架

期刊:2025 6th International Conference on Big Data & Artificial Intelligence & Software Engineering (ICBASE)

本研究由南京理工大学网络空间安全学院的徐丹丹和明经点(通讯作者)共同完成,其论文《超越统计相关性:通过强制崩溃一致性与语义蒸馏实现精确的根因分析》(*beyond statistical correlation: enforcing crash consistency and semantic distillation for accurate root cause analysis*)已发表于2025年第六届大数据、人工智能与软件工程国际会议(ICBASE)

学术背景与研究动因 本研究的科学领域归属于软件安全与漏洞分析,具体聚焦于自动化根因分析(Root Cause Analysis, RCA)。模糊测试(Fuzzing)技术虽能高效发现软件漏洞,但通常仅能指出漏洞存在,无法自动定位导致崩溃的根本原因。现有的自动化RCA方法主要分为基于规则(Rule-based)基于统计(Statistical) 两类。基于规则的方法(如FreeWill)针对特定漏洞类型(如释放后重用)精度高,但缺乏通用性。基于统计的方法(如Aurora)则更具通用性,通过分析大量崩溃与非崩溃输入之间的运行时行为差异,找出与崩溃统计相关性最高的程序实体作为根因候选。

然而,作者指出当前统计RCA框架存在两个关键缺陷,限制了其有效性:1) 崩溃一致性(Crash Consistency)低:模糊测试生成的崩溃输入集合中,往往混杂了由不同根本原因触发的多种崩溃类型,这会干扰针对目标漏洞的统计信号。论文以Aurora分析CVE-2021-35306为例,发现仅有38.61%的崩溃输入与原始漏洞共享同一根因。2) 语义噪声(Semantic Noise)大:现有方法(如Aurora)仅依赖统计相关性进行排序,未考虑程序的数据或控制依赖关系。这导致许多与崩溃点无实际依赖关系、对触发故障无实际贡献的谓词(Predicate)被误判为高相关性,产生大量误报。

为了解决上述问题,本研究旨在提出一种新的统计RCA框架,通过强制崩溃一致性和引入语义蒸馏来提升分析的准确性。具体目标是:设计高效精准的输入筛选策略,并利用数据流分析等技术,从统计相关的候选谓词中过滤掉语义无关的噪声,从而更精确地定位漏洞的根源指令。

详细工作流程 本研究提出的ASRCA框架主要包含三个核心组件:输入生成与筛选、统计分析、语义蒸馏。其实验对象为五个已知的真实世界漏洞(CVE编号如表I所示),涵盖了空指针解引用、缓冲区溢出和整数溢出等类型。

第一流程:输入生成与两阶段筛选 ASRCA以触发已知崩溃的概念验证(Proof-of-Concept, PoC)输入为初始种子,基于AFL(American Fuzzy Lop)进行变异以生成大量测试输入。其核心创新在于集成了一套两阶段过滤策略,以确保用于分析的崩溃输入具有高一致性。 * 研究对象与处理:研究对象是变异产生的所有测试输入,包括崩溃和非崩溃输入。 * 实验方法与工作流: 1. 粗粒度筛选(Coarse-grained Filtering):此阶段内置于模糊测试过程中。ASRCA修改了AFL的插桩,记录每个输入最后执行的基本块ID。在模糊测试运行时,一旦某个输入导致崩溃,ASRCA会立即将其崩溃地址(具体到基本块)与原始PoC的崩溃地址进行比较。如果不同,则直接丢弃该崩溃输入,并不将其加入后续变异的种子池。这一步以极小开销快速排除了大量在完全不同位置崩溃的无关输入,避免了计算资源浪费在对无关代码路径的探索上。 2. 细粒度筛选(Fine-grained Filtering):此阶段在输入生成结束后进行。对于通过了粗粒度筛选(即崩溃地址与PoC相同)的崩溃输入,ASRCA利用运行时消毒器(Sanitizer)和GDB脚本提取详细的崩溃诊断信息,包括崩溃类型、故障变量和栈回溯轨迹等。随后,通过Python脚本分析这些信息,仅保留那些与原始PoC具有相同崩溃特征签名(即共享相同底层根因)的输入。最终,将与PoC同源的崩溃输入和随机采样的非崩溃输入一同送入下一阶段。

第二流程:统计分析 此阶段旨在从筛选后的输入执行轨迹中,找出与崩溃统计相关性最高的程序状态谓词。 * 研究对象:经过两阶段筛选后保留下来的、高质量的崩溃与非崩溃输入集合。 * 实验方法与工作流: 1. 轨迹收集与谓词构建:ASRCA为每个输入收集运行时轨迹,记录寄存器值、内存值、控制流转移等细粒度信息。基于这些信息,构建描述特定程序状态的谓词,例如“某通用寄存器的最大值是否超过1000”、“某标志寄存器中的溢出位是否被设置”、“执行是否从基本块X跳转到基本块Y”等。 2. 相关性计算与排序:对于每个谓词,ASRCA采用与Aurora相同的统计度量公式(论文中式1)来计算其与崩溃发生的相关性分数(θ值)。该公式综合考量了谓词对崩溃和非崩溃输入的预测正确率。最后,将所有谓词按其相关性分数从高到低排序,生成一个初步的根因候选列表。分数越高,表明该谓词所描述的状态与崩溃的关联越强。

第三流程:语义蒸馏 此阶段是ASRCA的另一大创新,目的是验证统计排名靠前的谓词是否具有真实的语义关联性,从而过滤掉统计噪声。 * 研究对象:原始PoC输入的执行轨迹,以及统计分析阶段排名靠前的候选谓词。 * 实验方法与工作流: 1. 细粒度动态追踪:ASRCA使用Intel Pin动态二进制插桩工具,对原始PoC输入进行单次执行,并收集指令级别的细粒度轨迹。这些轨迹不仅包含指令序列,还特别记录了内存读写事件的确切地址和内容,为解决内存别名(Aliasing)分析难题提供了关键信息。 2. 基于具体执行轨迹的向后数据流分析:ASRCA执行一个自研的、用Python实现的后向数据流分析算法。该分析从崩溃点开始,逆向扫描PoC的执行轨迹。它维护一个需要追踪的值集合(初始包含导致崩溃的直接值)。对于集合中的每个值,算法在轨迹中向前(按执行时间逆序)查找其来源——例如,它可能来自某个算术指令的计算结果、某个寄存器的移动,或某次内存读取操作。当遇到内存读取时,算法利用步骤1中记录的具体内存地址和内容,精确地确定写入该值的源头指令,从而有效解决内存别名问题。每当找到一个值的源头,就将新的上游值加入追踪集合。此过程不断递归进行,直到处理完所有相关指令,或将值的来源追溯至PoC输入本身。 3. 谓词过滤:通过上述分析,ASRCA可以精确识别出所有在数据流或控制流上真正贡献于崩溃的指令集合。随后,它将统计分析阶段得到的候选谓词与此依赖集进行比对。任何其关联指令不在此依赖集内的谓词,即使统计相关性很高,也被视为语义无关的噪声并被丢弃。最终,只有那些与崩溃有真实语义关联的指令所对应的谓词,才会被保留为可信的根因候选。

主要研究结果 研究结果通过对比ASRCA与基线框架Aurora在五个真实漏洞上的表现来呈现,评估指标包括崩溃一致性、根因排名和分析时间。

在输入筛选与崩溃一致性方面:ASRCA的两阶段过滤策略取得了显著成功。如表I所示,ASRCA在所有五个漏洞上都达到了100%的崩溃一致性,这意味着用于统计分析的崩溃输入全部由同一个根本原因触发。相比之下,Aurora仅在CVE-2019-14267上表现出高一致性(98.66%),在其他四个漏洞上一致性极低(如CVE-2018-9132为13.99%,CVE-2021-45860仅为6.21%)。低一致性导致Aurora无法在四个漏洞上给出有意义的根因排名(表中标记为“-”)。这一结果直接证明了崩溃一致性是进行有效统计相关性分析的前提,ASRCA的筛选策略成功解决了第一个核心挑战。

在根因分析准确性方面:得益于100%的崩溃一致性以及后续的语义蒸馏,ASRCA在所有五个案例中都成功识别出了真正的根本原因,并且在所有案例中都将其排名提升至前20位以内。具体表现为:在CVE-2021-45860上将根因排名第一,在CVE-2018-9132上排名第二,在其他漏洞上排名也显著优于或填补了Aurora的空白(如CVE-2019-14267从第12位提升至第8位)。这清晰地表明,语义蒸馏有效过滤了统计噪声,将分析焦点集中在真正与故障传播相关的指令上,从而大幅提高了排名的准确性,减轻了人工分析负担。

在分析效率方面:ASRCA不仅更准确,而且更高效。如表I所示,在所有案例中,ASRCA的分析时间(t_analysis)均显著少于Aurora。例如,对于CVE-2021-45860,Aurora需要1小时45分18秒,而ASRCA仅需24分12秒。效率提升主要归功于两阶段筛选:ASRCA分析的实际输入数量(#inputs)普遍少于Aurora。例如对同一漏洞,ASRCA分析1360个输入,而Aurora分析2213个。更少、更相关的输入意味着需要收集和处理的运行时轨迹更少,直接加速了统计分析阶段。这表明ASRCA的筛选策略在提升质量的同时,也通过减少无效计算提升了整体效率。

结论与价值 本研究的结论是,ASRCA框架通过整合强制崩溃一致性的两阶段筛选基于具体执行轨迹的语义蒸馏,有效克服了现有统计RCA方法的局限性,显著提升了自动化根因分析的准确性和效率。

其科学价值在于:1)明确并验证了崩溃一致性对统计RCA有效性的关键影响,并提出了一套行之有效的实现方法。2)创新性地将动态轨迹引导的精确数据流分析引入统计RCA流程,为区分统计相关性与真实语义关联提供了新思路和新方法,增强了分析结果的可靠性和可解释性。3)为通用型、自动化的漏洞诊断工具发展提供了更强大的技术路径。

其应用价值在于:ASRCA能够更快速、更精准地定位漏洞根因,将安全研究人员从繁重的崩溃分类和根因排查工作中部分解放出来,从而加速漏洞修复和补丁开发流程,提升软件安全响应的整体效率。

研究亮点 1. 问题定位精准:直指现有统计RCA两大痛点——崩溃一致性低与语义噪声大,并进行了实证分析(如CVE-2021-35306案例)。 2. 方法集成创新:并非单一改进,而是系统性地整合了输入筛选和程序分析。两阶段过滤策略兼顾了效率与精度;语义蒸馏则巧妙利用一次PoC执行的具体轨迹来指导精准的后向数据流分析,有效规避了纯静态分析中棘手的内存别名等问题。 3. 验证充分有效:在五个不同类型、来自不同真实软件的真实漏洞上进行了全面评估,结果一致且显著,有力支撑了其方法优越性的结论。 4. 实用性突出:构建于成熟框架(Aurora/AFL)之上,引入了可管理的开销,在提升精度的同时甚至提高了分析速度,具备较高的实用化潜力。

其他有价值内容 论文在最后指出了未来工作方向,包括将ASRCA扩展到处理多故障场景,以及融入更先进的动态分析技术以获取更深层的语义洞察。这为后续研究提供了清晰的思路。同时,论文也获得了云南省科技重大专项等项目的支持,体现了其实际应用价值受到的关注。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com