Skip to main content
QUICK REVIEW

[论文解读] Combining Static and Dynamic Analysis for Vulnerability Detection

Sanjay Rawat, Dumitru Ceara|arXiv (Cornell University)|May 16, 2013
Security and Verification in Computing参考文献 25被引用 6
一句话总结

本文提出一种混合漏洞检测方法,结合静态污点分析与基于遗传算法的动态输入生成,以检测C程序中的缓冲区溢出漏洞。通过使用污点依赖序列(TDS)引导输入生成,并采用基于运行时语句频率谱的适应度函数,该方法能有效聚焦于可利用的执行路径,实现比传统模糊测试或符号执行更快、更准确的崩溃重现。

ABSTRACT

In this paper, we present a hybrid approach for buffer overflow detection in C code. The approach makes use of static and dynamic analysis of the application under investigation. The static part consists in calculating taint dependency sequences (TDS) between user controlled inputs and vulnerable statements. This process is akin to program slice of interest to calculate tainted data- and control-flow path which exhibits the dependence between tainted program inputs and vulnerable statements in the code. The dynamic part consists of executing the program along TDSs to trigger the vulnerability by generating suitable inputs. We use genetic algorithm to generate inputs. We propose a fitness function that approximates the program behavior (control flow) based on the frequencies of the statements along TDSs. This runtime aspect makes the approach faster and accurate. We provide experimental results on the Verisec benchmark to validate our approach.

研究动机与目标

  • 为解决纯静态或动态漏洞检测的局限性,结合两种方法。
  • 通过污点依赖序列(TDS)减少静态分析中的误报,并提升动态分析的路径覆盖率。
  • 自动化生成可触发缓冲区溢出漏洞的恶意输入。
  • 通过分析成功利用后的崩溃行为与栈内容,提供关于可利用性的洞察。

提出的方法

  • 静态分析(STAC)执行污点数据流分析,以识别TDS——从用户输入到敏感语句的传播路径。
  • TDS用于引导动态输入生成,将搜索聚焦于相关程序路径。
  • 遗传算法(TAGA)演化输入,以最大化基于运行时语句频率谱的适应度。
  • 适应度函数将执行轨迹与目标TDS进行比较,奖励那些遵循相同控制流模式的输入。
  • 对程序执行进行插桩,以收集运行时轨迹,用于频率谱分析。
  • 崩溃检测触发调试机制,以分析栈内容并评估可利用性。

实验结果

研究问题

  • RQ1污点依赖序列(TDS)是否能有效缩小动态分析中触发漏洞输入的搜索空间?
  • RQ2基于运行时语句频率的适应度函数如何提升基于遗传算法的输入生成的效率与准确性?
  • RQ3静态与动态分析相结合的方法在检测可利用的缓冲区溢出方面,相较于符号执行或随机模糊测试,优势有多大?
  • RQ4该方法能否通过分析与崩溃相关的运行时数据,提供关于可利用性的可操作洞察?
  • RQ5该方法在处理复杂控制结构(如嵌套或复合IF条件)时,如何实现输入生成?

主要发现

  • 该混合方法在Verisec基准测试套件中成功检测到缓冲区溢出漏洞,相较于传统模糊测试展现出更高的效率。
  • 使用TDS显著缩小了搜索空间,通过聚焦于实际存在污点传播至敏感语句的路径。
  • 基于频率谱的适应度函数通过近似控制流行为,加快了遗传算法的收敛速度。
  • 成功的利用尝试产生了可分析的崩溃,使栈内容得以详细分析,直接提供了可利用性的线索。
  • 该方法通过结合路径引导与动态反馈,优于纯覆盖率驱动或约束求解方法。
  • 该方法在处理复杂控制结构方面展现出潜力,但对源代码中的复合IF条件仍存在挑战。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。