一句话:提出基于程序度量的轻量可扩展框架 LEOPARD,通过复杂度分箱与漏洞度量排序定位潜在易受攻击函数。
现有度量和模式方法难以有效识别易受攻击代码:前者受非脆弱与脆弱代码严重不平衡及特征不足限制,后者依赖已知漏洞且只能发现相似漏洞。本文提出并实现通用、轻量、可扩展的框架 LEOPARD,无需已知漏洞先验。它结合两组系统推导的度量:先用复杂度度量将目标应用中的函数分组到若干 bin,再用漏洞度量在每个 bin 内排序,将排名靠前的函数视为潜在易受攻击。在 11 个真实项目上的实验表明,识别 20% 的函数可覆盖 74.0% 的易受攻击函数,优于机器学习和静态分析技术。作者进一步提出 LEOPARD 用于人工代码审查和 fuzzing,在 PHP、radare2、FFmpeg 等真实应用中发现 22 个新 bug,其中 8 个为新漏洞。
Identifying potentially vulnerable locations in a code base is critical as a pre-step for effective vulnerability assessment; i.e., it can greatly help security experts put their time and effort to where it is needed most. Metric-based and pattern-based methods have been presented for identifying vulnerable code. The former relies on machine learning and cannot work well due to the severe imbalance between non-vulnerable and vulnerable code or lack of features to characterize vulnerabilities. The latter needs the prior knowledge of known vulnerabilities and can only identify similar but not new types of vulnerabilities. In this paper, we propose and implement a generic, lightweight and extensible framework, LEOPARD, to identify potentially vulnerable functions through program metrics. LEOPARD requires no prior knowledge about known vulnerabilities. It has two steps by combining two sets of systematically derived metrics. First, it uses complexity metrics to group the functions in a target application into a set of bins. Then, it uses vulnerability metrics to rank the functions in each bin and identifies the top ones as potentially vulnerable. Our experimental results on 11 real-world projects have demonstrated that, LEOPARD can cover 74.0% of vulnerable functions by identifying 20% of functions as vulnerable and outperform machine learning-based and static analysis-based techniques. We further propose three applications of LEOPARD for manual code review and fuzzing, through which we discovered 22 new bugs in real applications like PHP, radare2 and FFmpeg, and eight of them are new vulnerabilities.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@inproceedings{abs-1901-11479,
title = {LEOPARD: Identifying Vulnerable Code for Vulnerability Assessment Through Program Metrics},
author = {Xiaoning Du and Bihuan Chen and Yuekang Li and Jianmin Guo and Yaqin Zhou and Yang Liu and Yu Jiang},
booktitle = {ICSE},
year = {2019},
doi = {10.1109/icse.2019.00024}
}