当前位置:   article > 正文

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

cwe119

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

  • 介绍

海量的数据是应用人工智能的基石,深入了解数据有利于进一步开展相关研究。这批可用于深度学习的源代码漏洞数据来源于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”对自定义变量名和函数名进行替换,以避免自定义函数名和变量名对切片的漏洞语义信息产生干扰;记录每个切片的语料、行号、标签等信息用于数据分析;最后对切片数据进行了去重处理,包括对语料相同且标签相同的样本只保留一个,对语料相同而标签不同的样本予以删除(本次试验中共发现前者37388组,后者1148组)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/514699
推荐阅读
相关标签
  

闽ICP备14008679号