4、SySeVR复现——Generating slices
创始人
2024-02-08 13:49:29
0

目录

1、准备阶段

2、生成实验数据的CFG图

3、生成实验数据的PDG图

4、生成实验数据的调用图

5、获取四种类型的SyVCs

6、提取SeVCs

7、获取漏洞的代码行号

8、给切片打标签

9、将标签写入切片


1、准备阶段

        实验数据我只用这些:

        (1)NVD

        (2)NVD_diff

        将实验数据放在/home/test/source2slice目录下

         删除.joernIndex文件

         将实验数据导入joern

        开启neo4j数据库

2、生成实验数据的CFG图

mkdir cfg_db
python2 get_cfg_relation.py

         运行文件的结果:

        (1)会针对NVD中的每个实验数据,都会生成相应的文件夹;

         (2)每一个文件夹下,有三个pkl文件,分别为cfg.pkl、dict_cfgnode2if.pkl、dict_if2cfgnode.pkl

         cfg.pkl中保存的是函数CFG图的边,另外两个文件目前不清楚作用。

 

3、生成实验数据的PDG图

mkdir pdg_db
python2 complete_PDG.py

         运行结果:
        (1)会生成每个实验数据对应的pkl文件

         (2)以第一个pkl文件为例,可以看到文件中包含的是pdg图相应的边信息。

         另外,以10这个节点为例,其实pkl文件中的边是经过选择了的,也就是说neo4j数据库中保存着程序的PDG图,但是有一些冗余的信息需要处理。

4、生成实验数据的调用图

mkdir dict_call2cfgNodeID_funcID
python2 access_db_operate.py

         运行结果:

        (1)生成一个dict.pkl文件

         (2)打开该pkl文件

         这里打开文件,里面没东西,可能是文件数太少,没有调用关系,这里还有待深究。

5、获取四种类型的SyVCs

python2 points_get.py

         运行结果:

        (1)在source2slice目录下生成四种SyVCs相对应得pkl文件:

  • sensifunc_slice_points.pkl
  • pointuse_slice_points.pkl
  • arrayuse_slice_points.pkl
  • integeroverflow_slice_points_new.pkl

        (2)查看文件里是啥

        1)sensifunc_slice_points.pkl

        以sensifunc_slice_points.pkl文件为例,里面保存的是符号函数调用漏洞的一些危险函数,以及其在图数据库中的信息。

        以(['100'],'86','strcpy')为例,100是strcmp所在语句节点的编号,86是strcmp所在的函数的编号。

 

        其余三个文件中得内容,也差不多。

        2)pointuse_slice_points.pkl

 

         3)arrayuse_slice_points.pkl

        4)integeroverflow_slice_points_new.pkl

6、提取SeVCs

mkdir -pv C/test_data/4 
python2 extract_df.py

         运行结果:

        (1)生成四种漏洞类型对应的SeVCs

         (2)以api_alices.txt为例,打开该文件:

         以strcpy为例,可以看到,生成了strcpy的切片,并且每一句后面都表明了该行代码在文件中的行数。

7、获取漏洞的代码行号

        首先,dealfile.py文件需要做以下修改:

python2 dealfile.py

        运行结果:

        (1)在source2slice文件下,会生成一个vul_context_func.pkl文件;

         (2)这个文件里保存:通过对比diff文件,以论文中提到的漏洞认定标准,找到有漏洞的文件中危险语句的行数。

        以CVE_2004_1151_PATCHED_sys32_ni_syscall.c文件为例:

        对应的diff文件,保存了CVE_2004_1151_PATCHED_sys32_ni_syscall.c的危险语句,即第4、5、6、7、8行语句。

         生成的vul_context_func.pkl中,保存的就是这些危险语句在原文件中的位置。

 

8、给切片打标签

        对源文件做以下更改:

        (1)修改路径:切片文件、标签文件以及vul_context_func.pkl文件

         (2)获取key的时候,如下图一样更改。

python2 make_label_nvd.py

        运行结果:

        (1)在./C/label_data/目录下,生成四种SyVCs对应的标签文件

        (2)以api_slices_label.pkl文件为例,可以看到文件中对每一个切片文件都做了标签,0代表该切片没有漏洞;1代表该切片有漏洞。

9、将标签写入切片

        对原文件做以下修改:

python2 data_preprocess.py

         运行结果:

        (1)在./slice_label文件下,产生了四种SyVCs对应的txt文件,其实这四个文件就是李珍老师github上给的四个txt文件。

        (2)查看标签是否与李珍老师给的一样,这里仅以一个被标记为0的api切片和一个被标记为1的api切片为例:

        1)标记为0的api切片

        2)标记为1的api切片

 

        综上,生成了四种SyVCs切片文件,且都打了标签。下一步将进行切片的向量化。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...