一句话:提出标志引导的混合模糊测试工具Algernon,通过识别标志变量并分解约束,高效探索隐藏路径。
模糊测试广泛用于发现软件安全问题,但某些代码路径仅在特定程序状态下可达。标志变量表示内部状态,并通过标志守卫分支影响程序行为;由于标志变量与输入间存在隐式数据依赖,现有工具难以高效探索这些分支,常以盲目或随机方式满足标志检查约束。本文提出动态标志引导的混合模糊测试方法:先通过预模糊测试程序分析识别标志变量,设计FDG表示标志变量对分支的守卫关系;再将复杂标志检查约束拆分为原子约束,遍历FDG顺序求解,定位可给标志变量赋期望值的执行路径。作者实现原型Algernon,在20个热门开源程序上评估,显示其在代码覆盖率和漏洞发现上优于QSYM、Angora、AFL++与INVSCOV,并发现30个零日漏洞,获11个CVE编号。
Fuzz testing is a widely used method for finding security issues in software. However, certain code paths can only be explored under specific program states. Flag variables, which represent internal states, are crucial in influencing program behavior through flag-guarded branches. Unfortunately, existing fuzzing tools struggle to efficiently explore them due to the implicit data dependency between flag variables and the input. As a result, they commonly lack awareness of the dependency between program input and the assignments of critical flag variables, leading to a blind or random approach to satisfy flag-checking constraints, which greatly impacts the fuzzing efficiency.To address this issue, this paper proposes a dynamic flag-guided hybrid fuzzing approach, which automates the identification of flag variables and provides guidance for fuzz testing. Specifically, we first design a pre-fuzzing program analysis to recognize flag variables and a novel data structure to present how flag variables guard code branches. Then, we propose a new constraint-solving approach by separating complex flag-checking constraints into a set of atomic ones and sequentially solving them by traversing our FDG to locate execution paths that could assign the flag variables with the desired values.We implement a prototype tool, called Algernon, and evaluate it on 20 popular open-source programs. Across all tested programs, Algernon outperforms QSYM, Angora, AFL++, and INVSCOV in terms of both code coverage and vulnerability discovery, demonstrating the effectiveness of our approach. During our experiments, Algernon successfully found 30 zero-day vulnerabilities with 11 CVE IDs assigned.
DOI 原文 ·
@inproceedings{paperbot9476,
title = {Algernon: A Flag-Guided Hybrid Fuzzer for Unlocking Hidden Program Paths},
author = {Peng Deng and Lei Zhang and Jingqi Long and Wenzheng Hong and Zhemin Yang and Yuan Zhang and Donglai Zhu and Min Yang},
booktitle = {ASE},
year = {2025},
doi = {10.1109/ase63991.2025.00253}
}