一句话:设计 FuzzGen++,解决 OEM Android 原生库上模糊测试驱动生成的兼容性、可用性与有效性障碍。
模糊测试驱动程序生成(FDG)是库软件模糊测试的基础技术,现有方法在开源库上成效显著,但面对 OEM Android 框架的定制编译工具链、庞大代码库与多样 C/C++ 语言特性时难以直接落地。作者首先系统总结了 FuzzGen 等工具应用于 OEM Android(ColorOS)原生库时在兼容性、可用性与有效性三方面的障碍,随后设计了 FuzzGen++ 逐一加以解决。评估表明,FuzzGen++ 兼容 OEM Android,可为现有工作不支持的所有库生成驱动;配合驱动排序与选择方案,共自动生成 21,457 个模糊测试驱动并剔除其中 95% 的低价值驱动。相较手写驱动,其覆盖率提升 107.92%,并发现 6 个真实缺陷。
Fuzz driver generation (FDG) is a fundamental technique for fuzzing library software. Existing FDG approaches have been highly successful with open-source libraries. However, in practice, due to the complex nature of OEM Android frameworks (e.g., customized compilation toolchains, extensive codebases, diverse C/C++ language features), it is not straightforward to integrate existing fuzz driver generation tools with OEM Android libraries. To address this challenge, we first systematically summarize the obstacles to applying existing tools (e.g., FuzzGen) to libraries of an OEM Android (i.e., ColorOS), including compatibility, usability, and effectiveness issues. Following this, we developed a new fuzz driver generation tool, namely FuzzGen++, specifically designed to tackle these obstacles one by one. In our evaluation, we demonstrate the advantages of FuzzGen++ in real-world OEM Android frameworks. FuzzGen++ is compatible with OEM Android and can generate fuzz drivers for all its libraries which are not supported by existing works. The additional analysis of the OEM Android code also enhances its usability within the system. Overall, FuzzGen++ has helped automatically generate 21,457 fuzz drivers. Additionally, through fuzz driver ranking and selection solution, FuzzGen++ figured out cut off 95% fuzz drivers which are less useful. FuzzGen++ supports sophisticated C/C++ features in code analysis, ensuring effectiveness. Compared to hand-written fuzz drivers, FuzzGen++ could generate and select fuzz drivers providing a 107.92% coverage improvement. Furthermore, they discovered 6 bugs, showcasing the capability of FuzzGen++ to find real-world issues.
DOI 原文 ·
@inproceedings{paperbot8288,
title = {Applying Fuzz Driver Generation to Native C/C++ Libraries of OEM Android Framework: Obstacles and Solutions},
author = {Shiyan Peng and Yuan Zhang and Jiarun Dai and Yue Gu and Zhuoxiang Shen and Jingcheng Liu and Lin Wang and Yong Chen and Yu Qin and Lei Ai and Xianfeng Lu and Min Yang},
booktitle = {ASE},
year = {2024},
doi = {10.1145/3691620.3695266}
}