论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Towards Practical Binary Code Similarity Detection: Vulnerability | 2023年 | ACM Transactions on Software Engineering and Methodology | CCF A | 信息工程研究所 |
1. 引言
重复性漏洞简介:开源库中的重复性漏洞,也称为 1-day 漏洞,由于代码重用和共享而广泛传播,已成为网络安全中最严重的威胁之一。例如,OpenSSL 中发现的 HeartBleed bug (CVE-2014-0160) 作为一个 1 天漏洞,已经影响了全球 24% 到 55% 的流行 HTTPS 网站。检测漏洞的主要方法有两种:动态方法和静态方法。在所有动态方法中,模糊测试是检测软件中漏洞的传统且最常用的方法。它使用突变的输入执行程序并监视异常行为,这通常表明潜在的漏洞。因此,模糊测试只能测试程序执行可以覆盖的代码。随着程序变得越来越大,模糊测试只能测试其中的一小部分来发现漏洞。由于代码覆盖率有限,模糊测试无法确认每个给定的易受攻击的函数。
代码相似性检测解决重复性漏洞问题:在检测 1-day 漏洞方面,静态方法优于动态方法,因为它们产生的误报更少。考虑到 1-day 漏洞的广泛存在,最小的FNR(即更少的被忽视的漏洞)正在成为一个重要因素。这些工作利用二进制代码相似性检测(即函数匹配)技术从易受攻击的函数中提取各种签名,以找到相似的函数并将它们视为潜在的易受攻击的函数。该方法能够有效覆盖整个程序的所有功能。然而,现有的方法更多地侧重于提高功能匹配结果的准确性,以精确检测包含漏洞的候选功能。
代码相似性检测中存在的问题:尽管这些方法可以有效的降低 FNR ,但它们在发现漏洞时往往具有很高的 FPR(将补丁函数误判为漏洞函数)。具体来说,软件维护人员可以对易受攻击的函数进行修补,使得该漏洞不再存在。与漏洞函数的大小相比,补丁通常只存在很少的代码修改。函数匹配算法被设计为能够容忍细微的变化,因此很可能将补丁函数与漏洞函数的签名相匹配。因此,漏洞匹配结果将是已修补和有漏洞的功能的混合体&#x