1、论文及代码
(1)论文:Zhou Y, Liu S, Siow J, et al. Devign: Effective vulnerability identification by learning comprehensive program semantics via graph neural networks[J]. Advances in neural information processing systems, 2019, 32.
2、配置环境
(1)博主采用环境为:Python=3.10.11、Pytorch=2.4.0、Joern=1.7.0、torch-geometric=2.6.1、gensim、sklearn、cpgclien。
(2)torch-geometric配置可参考这篇文章,torch_geometric详细安装教程_torch-geometric-CSDN博客
(3)其他库安装命令如下:
(a)gensim
pip install gensim -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
(b)sklearn
pip install scikit-learn -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
(c)cpgclient
pip install cpgclientlib -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
3、运行
(1)修改main.py,只是为了快速跑通代码,修改如下图。
(2)处理第一个报错,报错如下。
(a)处理方法:找到“devign-master\src\data\datamanager.py”文件,将该文件中所有“append”修改“_append”,共有4处。
(3)处理第二个报错,报错如下。
(a)报错原因:“data/input/”的数据集有问题。
(b)处理方法:删除 “data/input/”下所有文件,可使用别人构造的cpg_input.pkl文件,或者自己构造cpg_input.pkl文件。
(i)使用别人构造的(为了快速跑通代码,博主使用此方法)。下载地址: https://www.123684.com/s/dKwvTd-s52pd?提取码:64h9
(ii)自己构造。Joern报错时可参考这篇文章,在joern中使用graph-for-funcs.sc报错-CSDN博客
(4)处理第四个报错,报错如下
(a)处理方法:在“data/”目录下,创建个“model”文件夹。
(5)成功运行。
4、关闭训练提前结束机制
(a)操作方法:注释“src/process/modeling.py”的28-34行代码。关闭后,训练不会提前结束,而是根据config.json中的epochs的值来结束。
5、一些疑惑
(1)不知道为什么有时跑出来数据很奇怪,重复跑几次还是奇怪,TP、FP都为零。感觉根本就没有学习到漏洞特征,直接全部预测为无漏洞。有朋友知道的话,欢迎留言讨论。
标签:mirrors,torch,Devign,漏洞,报错,复现,aliyun,input,com From: https://blog.csdn.net/m0_56887139/article/details/143501925