可用于深度学习的源代码漏洞数据分析

本文分析了一组源于NDSS'18的VulDeePecker数据集,该数据集包含C/C++程序切片,用于深度学习的源代码漏洞识别。数据主要来自SARD和NVD,涉及CWE-119和CWE-399类型的漏洞。通过程序切片、数据处理和分析,揭示了数据来源、性质、漏洞分布和挑战。
摘要由CSDN通过智能技术生成

可用于深度学习的源代码漏洞数据分析

  • 介绍

海量的数据是应用人工智能的基石,深入了解数据有利于进一步开展相关研究。这批可用于深度学习的源代码漏洞数据来源于NDSS’18的VulDeePecker[1]提供的数据集,其数据均属于C/C++程序切片,通过从源代码中的某些可能与漏洞相关的API库函数为关注点根据数据流相关性前向后向提取语句组成程序切片,每个切片样本有对应的0或1标签,0表示无漏洞,1表示有漏洞。这些数据来源于NIST参考数据集SARD和美国国家漏洞数据库NVD,漏洞类型分为CWE-119和CWE-399。

  • 程序切片

程序切片是指从程序P中提取和关注点N有关的指令而不包含无关的指令,切片S与源程序P在一定的切片准则下的语义是一致的,即保留了完整程序语义的同时减少了无关指令的干扰。1979年,美国Mark Weise首次提出了程序切片思想,在程序控制流图(CFG)上建立了数据流方程。1984年,K.J.Ottenstein 和 L.M.Ottenstein提出了程序依赖图(PDG),后续又提出了系统依赖图(SDG),从而使提取切片的基础方法分为数据流方程算法、基于PDG的图可达算法和基于SDG的图可达算法。

切片方向可以分为后向切片和前向切片,其中后向切片是为了寻找与程序P中对关注点N有影响的语句,出现在关注点的前面;前向切片是寻找程序P中会受到关注点N影响的语句,出现在关注点的后面。在该数据集中,单个切片是以可能存在风险的API库函数为关注点,依据程序的数据流相关性对程序P进行后向切片和前向切片的并集。

更多程序切片的相关知识参见[2]。

  • 数据处理

具体的数据处理内容包括对文本文件进行拆分,分别读取每一个切片;对切片进行词法分析,删除程序中的注释,并将切片文本转换为每个元素为一个词的列表;将单个切片内的用户自定义变量名和自定义函数名进行映射,即使用“variable_m”、“function_n”对自定义变量名和函数名进行替换,以避免自定义函数名和变量名对切片的漏洞语义信息产生干扰;记录每个切片的语料、行号、标签等信息用于数据分析;最后对切片数据进行了去重处理&#

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值