USENIX Security 2023正在太平洋对岸召开,先给大家看一些照片吧~
今年的会议论文录用率和录用数量都比2022年有了巨幅提升~
不知道我们的读者里面有多少人去参会了,来听我们报告(对,就是下图中Track 1的最后一个)的同学,应该都和我们的报告speaker交流了吧?顺便说一下,我们的论文PDF有点小错误(无伤大雅),如果大家要看正确的版本,可以访问 https://medusa.code-analysis.org 下载勘误后的版本。
当然,接下来让我们期待一下2024年的USENIX Security吧
言归正传,今天要推荐USENIX Security 2023上一篇来自韩国的研究论文(嗯趁着室温超导还没凉),这篇论文介绍了针对开源代码的1-day漏洞检测。乍一听起来,研究的问题好像很普通,但是作者设计的V1scan
工具效果非常好,针对 GitHub 上流行的 C/C++ 开源项目,V1scan
的检测率比主流的工具高出了50%,而且和主流的基于代码版本或基于代码内容的1-day漏洞检测方法相比,V1scan
能够把误报率从71%降低到4%!同时把漏报率从33%降低到7%,这个听上去是不是很厉害~
要揭秘论文技术,首先要回顾一下传统的技术。主流的开源代码1-day漏洞检测方法,要么是基于代码版本(version-based,也就是分析开源代码的版本,如果是特定的版本就说明有漏洞),要么是基于代码内容(code-based,也就是对代码的细节进行程序分析)。这两者各有各的毛病,作者拿RecatOS里面的代码做了测试(下表),展示了这两种方法的问题:如果只是用version-based的方法,检出漏洞的能力是很差的,特别是如果把代码的版本识别错了(这种情况经常发生),那准确率简直是一塌糊涂;而如果只用code-based的方法,如果使用者把集成的开源代码稍微改一改,就很容易造成漏报。
在本文中,V1scan
对主流的两种方法分别进行了改进,然后把它们结合起来,达到了更好的效果。具体来说,针对version-based方法,V1scan
引入了一种叫做reused code classification的技术,就是对引入的开源代码,不仅要检查版本,还要检查它的更改情况;而对于code-based方法,则引入了一种叫做vulnerable code classification的技术,能够进行更加细粒度的检查,减少了误报。
我们看看下面这幅图(Figure 3),就大概明白了reused code classification的思路,它其实就是把引入的开源代码分为“完全重用”(exactly reused)、“修改过”(changed)和“未被用到”(unused)三个类别,然后再分类讨论。比如unused类别,就完全不需要考虑代码漏洞,这样一来就很好地解决了version-based方法检测粒度太粗导致不准确的问题。
再看看V1scan
对code-based方法的改进,以下面的Listing 1为例,V1scan
对代码的分析,并不像传统的方法那样以函数(function)或者代码行(code line)为单位,而是综合考虑了函数、结构体、宏和变量,对每一部分都分别作为特征来辅助识别,这种思想当然可以更加准确地追踪漏洞的存在。
至于V1scan
是怎么具体去抓到开源代码中的漏洞存在,论文中有详细的阐述,我们就不再展开,V1scan
的整体工作流程:
最后说一下实验,这篇论文的实验数据集和实验比较都做得很好(唯一吐槽的一点——作者拿V1scan
和他们自己在USENIX Security 2021和2022的工作比较——也很难批评,谁叫人家年年能发表USENIX Security呢)。首先是作者拿自己在2021年ICSE发表的工作CENTRIS
中的开源代码数据集(包含了10241个开源的C/C代码项目)作为开源代码的数据集(而且把每个项目的版本都更新到了2022年的最新),然后根据代码提交记录和NVD数据库中的CVE记录交叉对比,收集了4612个C/C安全补丁(security patch)。
论文中,作者选择了10个代表性的大型项目(如下表)来进行测试。
进入到了作者的凡尔赛环节(拿自己USENIX Security 2023的工作和自己2021、2022的工作进行对比),如下图和下表所示:
你以为作者停止凡尔赛了吗?后面的测试更加凡尔赛,他们把V1scan
和自己发表于ICSE 2021的工作CENTRIS
对比完之后,又和自己在2017年IEEE S&P的工作VUDDY
进行了对比。快来管管这群作者吧!!!
虽然作者提供了完整的代码和数据集,我们还是衷心希望能有其他研究团队介入这个领域(充满了商业前景),打破垄断!
代码:https://github.com/wooseunghoon/V1SCAN-public
论文:https://www.usenix.org/system/files/usenixsecurity23-woo.pdf