基于深度学习的细粒度漏洞检测框架VulDeeLocator

发布时间 - 2023-06-12 11:25:14    点击率:1463次

自动检测软件漏洞是一个引起学术界广泛关注的重要问题,然而现有的漏洞检测方法均无法达到实际应用所需的漏洞检测能力和定位精度。本研究提出了一个基于深度学习的可以同时实现高检测能力和高定位精度的漏洞检测器VulDeeLocator。主要针对以下问题:如何容纳跨文件中类型和宏定义之间的语义关系,如何容纳精确的控制流和变量的定义-使用关系,以及如何实现高定位精度。VulDeeLocator采用两个创新的想法解决了上述问题:(i)利用中间代码来容纳额外的语义信息,以及 (ii)使用粒度细化的概念来确定漏洞的位置。当应用到3个实际软件产品中随机选择的200个文件时,VulDeeLocator检测到18个漏洞。其中,16个漏洞对应已知漏洞;其他两个未在美国国家漏洞库( NVD) 中报告,但在发布新版本时已由 Libav 供应商默默修补。

该成果“VulDeeLocator: A Deep Learning-Based Fine-Grained Vulnerability Detector”于2022年发表在IEEE Transactions on Dependable and Secure Computing的第19卷4期上,是实验室在软件安全领域的研究成果。IEEE Transactions on Dependable and Secure Computing主要关注计算机及网络安全、可信计算等领域的前沿研究,是中国计算机学会CCF推荐的A类期刊。

  • 论文链接:https://ieeexplore.ieee.org/document/9416836

背景与动机

尽管学术界和工业界在不断提高软件质量,在追求安全编程方面投入了大量精力,但软件漏洞仍然广泛存在,成为网络攻击的主要原因。消除漏洞的一种重要方法是设计漏洞检测器来检测它们,一个理想的漏洞检测器应该同时具有高检测能力和高定位精度,以精确定位包含漏洞的代码行。

最近,基于机器学习的漏洞检测器开始采用深度学习技术,在程序切片级别检测漏洞。这类漏洞检测器可以缓解手动定义特征的问题,然而目前仍然不能提供较高的检测能力和定位精度。目前先进的漏洞检测器SySeVR不能提供较高的检测能力,主要原因可以归于以下两点:①无法捕获跨程序文件的语义相关语句之间的关系;②无法容纳准确的控制流和变量的“定义-使用”关系。然而,这两点原因均通过直接分析源代码无法很好解决,由于目前基于深度学习的漏洞检测器不能获取足够的语义信息,导致漏洞检测效果不佳。

在定位精度方面,由于对程序切片进行操作,而一个程序切片可以有许多行代码,因此即使在切片粒度上进行漏洞检测,其定位精度也比较低。粗粒度漏洞检测只是漏洞评估的一个前置步骤,不能精确定位漏洞。

设计与实现

为了解决上述问题,我们为C语言源代码软件设计了一个基于深度学习的细粒度漏洞检测器VulDeeLocator。VulDeeLocator的基本思想是充分利用程序分析和深度学习技术:利用程序分析技术生成候选漏洞,利用深度学习技术消除程序分析引起的误报。具体来说,VulDeeLocator根据给定的一组漏洞语法特征从程序源代码中提取一些标记(例如标识符、运算符、常量和关键字),然后利用中间代码来容纳与这些标记相关语句的语义。这些语句被编码成向量,作为训练神经网络的输入来进行漏洞检测。测试阶段的输出比相应的输入具有更细的粒度。

VulDeeLocator的结构框架如图1所示,可以使用特定的中间代码表示和深度学习模型对其进行实例化。VulDeeLocator的输入是用于学习神经网络的训练程序源代码或用于漏洞检测的目标程序。具体来说,训练阶段的输入包括C语言程序的源代码,它可能包含漏洞也可能不包含漏洞。训练使用的C语言程序的源代码应满足以下条件:①可以被编译成中间代码,如LLVM中间代码;②含有漏洞的程序需附有对其漏洞位置的描述,这将用于定位程序中的漏洞。在较高层次上,VulDeeLocator包含两个组件,第一个组件生成训练程序和目标程序的中间代码表示,第二个组件使用基于中间代码的表示来进行细粒度漏洞检测。

图1  VulDeeLocator框架

在基于中间代码的漏洞候选表征组件中,VulDeeLocator从输入源代码中提取sSyVC,sSyVC是根据某些漏洞语法特征从程序中提取的一段代码。我们利用已知漏洞的语法特征,并通过程序源代码的抽象语法树来表示这些特征,具体来说,定义了以下四种漏洞语法特征:库/API函数调用、数组定义、指针定义以及算术表达式。给定程序的源代码,可以生成其抽象语法树,通过识别与某些漏洞语法特征匹配的节点的类型和代码,可以从中提取sSyVC。图2(a) 展示了一个程序中sSyVC的示例(红色矩形框部分)。在提取sSyVC后,VulDeeLocator会生成其中间表示(IR)切片iSeVC。具体来说,VulDeeLocator使用Clang编译器为原程序文件生成IR文件,并根据依赖关系链接IR文件。通过从链接的IR文件中提取控制和数据依赖关系来生成依赖关系图,根据sSyVC对依赖图进行切片,即可得到IR切片。在生成iSeVCs的过程中,VulDeeLocator会考虑函数调用关系,根据控制依赖或数据依赖关系,尽可能保留属于不同函数但彼此相关的语句。生成的iSeVC则是细粒度漏洞检测的输入。

图2  sSyVC和iSeVC的生成示例

在细粒度漏洞检测组件中,首先需要标注生成的iSeVC。VulDeeLocator按以下方式标注iSeVC:如果iSeVC包含已知漏洞,则会标记漏洞所在行号,否则,iSeVC会被标记为“0”,即不包含已知漏洞。由于漏洞数据集应提供源程序中间代码中漏洞的位置,因此源程序中漏洞的这些行号需要映射到中间代码中的行号,这可以通过利用调试信息附带的文本LLVM文件来完成。标注完毕后,每个iSeVC都需要编码成一个向量,该向量用作神经网络的输入。为了使iSeVC在捕获程序语义信息时独立于用户定义的函数名称,我们将用户定义的函数名称映射到统一的符号名称(例如,“FUN1”,“FUN2”),使用词嵌入技术将其编码为向量。在神经网络模型上,VulDeeLocator使用了如图3所示的BRNN-vdl结构,在标准BRNN架构上增加了三个额外的层,即multiple层、k-max池化层和平均池化层,来实现粒度细化和注意力机制。BRNN-vdl的输入包括iSeVC的表征向量以及表示每个iSeVC漏洞位置的矩阵。

图3  BRNN-vdl模型

实验结果

实验主要针对VulDeeLocator引入的基于中间代码的漏洞候选表示和BRNN-vdl模型来探究VulDeeLocator各改进方法在漏洞检测和定位上的提升效果。同时,VulDeeLocator也在测试数据集和真实软件上与具有代表性的漏洞检测工具进行对比,验证了VulDeeLocator在漏洞检测和定位上的有效性和先进性。

VulDeeLocator首先比较了使用基于源代码的漏洞候选表示sSeVC与基于中间代码的漏洞候选表示iSeVC的漏洞检测效果。实验使用了误报率FPR、漏报率FNR、准确率A、精确率P和F1分数等深度学习常见指标作为漏洞检测能力的评价指标,定位精度采用漏洞行IoU交并比和平均检测漏洞行数目 |V|指标进行衡量。实验结果如表1所示,可以看出,在使用相同模型的情况下,iSeVC能够有效提升漏洞检测效果。对于同一种漏洞候选表示,使用BRNN-vdl模型相较于BRNN模型也能对漏洞检测效果有较大提升。因此,实验证明了VulDeeLocator引入的iSeVC和BRNN-vdl模型的有效性。

表1  使用不同漏洞候选表示与深度学习模型的效果对比

在验证了VulDeeLocator有效性后,VulDeeLocator使用了两种不同的BRNN模型:BLSTM和BGRU,与先进的具有代表性的漏洞检测器进行了对比。在基于源代码和规则的漏洞检测器中,选取了开源工具Flawfinder和商业产品Checkmarx进行对比;在基于中间代码和规则的漏洞检测器中,选取了商业产品Fortify进行对比;在基于二进制代码和规则的漏洞检测器中,选取了开源的污点式漏洞检测器Saluki进行对比;实验还选取了两个基于深度学习的漏洞检测器VulDeePecker和SySeVR。实验结果如表2所示,表明了VulDeeLocator在测试数据集上的检测能力和定位精度相较于现有工具均有较大提升,且VulDeeLocator-BGRU优于VulDeeLocator-BLSTM。

表2  VulDeeLocator与先进的漏洞检测器的实验结果对比

最后,论文在三个真实软件产品(FFmpeg 2.8.2、Wireshark 2.0.5、Libav 9.10)的主要模块中随机选择了200个程序文件与5个具有代表性的漏洞检测工具进行了实验对比,实验结果如表3所示。通过实验验证,展现了VulDeeLocator-BGRU在真实软件产品中检测和定位漏洞的有效性和精确性。表4描述了VulDeeLocator-BGRU确认或遗漏的漏洞,在18个已确认的漏洞中,VulDeeLocator-BGRU发现了有两个Libav 9.10中漏洞,但其并未在美国国家漏洞库NVD中报告,却在软件供应商发布新版本时被“默默”修补。

表3  VulDeeLocator在3个真实软件产品上的检测效果

表4  VulDeeLocator在真实软件产品上识别的漏洞

详细内容请参见:

Zhen Li, Deqing Zou, Shouhuai Xu, Zhaoxuan Chen, Yawei Zhu, Hai Jin. VulDeeLocator: A Deep Learning-Based Fine-Grained Vulnerability Detector. IEEE Transactions on Dependable and Secure Computing, 2022, 19(4): 2821-2837.

https://ieeexplore.ieee.org/document/9416836

来源:穿过丛林

最新文章 第十二版《网络安全企业100强》发布 开源推荐算法为什么并不“可靠”? 虹膜写真风靡年轻人:小心泄露敏感个人信息 国内最大IT社区CSDN被挂马,CDN可能是罪魁祸首? Apache Struts文件上传漏洞 (CVE-2024-53677) 安全风险通告 工信部:关于防范新型勒索病毒Ymir的风险提示 美国报告揭示俄罗斯战略信息攻击:从攻击方法到战略效果 最危险的网络攻击:云勒索软件 个人信息保护合规审计:个人信息删除落地与审计 Forrester:Akamai创新微分段技术引领企业安全升级,实现 152%高ROI Fortinet发布《2025年网络威胁趋势预测报告》 揭秘四大威胁挑战 榜上有名!360入选2024年天津市网络安全应用场景优秀案例 只需一个暗号,即可戳穿语音克隆骗局 写在IDCC2024数字基础设施国际合作大会之前 IETF的运行方式及RFC的形成 《AI时代深度伪造和合成媒体的安全威胁与对策(2024版)》报告发布 UnitedHealth勒索软件攻击事件应吸取的六个备份教训 网络安全产品奥斯卡 2024年度赛可达优秀产品奖(SKD AWARDS) “危“”机“并存,五位网络安全大咖预警2025年安全态势 赋能智算未来,CDCE2024国际数据中心展12月5日上海璀璨开幕 俄罗斯黑客组织渗透和利用巴基斯坦黑客组织服务器案揭秘 国家安全部:警惕开源信息成为泄密源头 “清朗·网络平台算法典型问题治理”专项行动中的排名算法 游戏玩家请注意!Winos4.0木马已“潜伏” 2024 DAMS中国数据智能管理峰会即将在上海举办 WAF气数已尽? 网安巨头Palo Alto全球数千防火墙被攻陷:因开发低级错误造成零日漏洞 数字城市AI安全运营中心签约揭牌,360赋能长三角城市安全新篇章 勒索软件忙招人,2024年网络威胁五大新趋势 360发布全球首份《大模型安全漏洞报告》,曝光近40个大模型相关安全漏洞 值得关注的十二大网络安全风险评估工具及选型指南 俄黑客通过“近邻攻击”远程入侵美国企业WiFi网络 四校签约、六家授牌!360与河南高校再摘网络安全人才培育新果实 Apple多个在野高危漏洞在野利用通告 苹果官方警告:零日漏洞攻击瞄准Mac电脑用户 《密码法》颁布五周年:法治成效、实施难点与未来走向 27天!揭秘身份管理中凭证修复为何如此艰难? 微软“清理门户”,禁止杀毒软件访问Windows内核 云原生环境下的七大网络安全威胁及应对建议 ​透析恶意软件“四大家族”
在线客服
联系方式

热线电话

18556842815

上班时间

周一到周五

公司电话

027-85365976

二维码
线