4、SySeVR复现——Generating slices

news2024/11/25 11:23:54

目录

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切片文件,且都打了标签。下一步将进行切片的向量化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring源码深度解析:六、ConfigurationClassPostProcessor

一、前言 文章目录:Spring源码分析:文章目录 ConfigurationClassPostProcessor是非常重要的一个 后处理器。 ConfigurationClassPostProcessor完成了 配置类的解析和保存以及Component注解、Import等注解的解析工作 。将所有需要注入的bean解析成BeanD…

【学习日志】2022.11.18 Technical Artist Training Tutorial----Unlit Shader Of Unity

着色器 - Unity 手册 (unity3d.com)https://docs.unity3d.com/cn/current/Manual/Shaders.html 常用板块(Properties) _MainTex("MainTex",2D)"black"{} _Float("Float",Float)0.0 _Range("Range",Range(0.0,1…

【测试沉思录】14. 性能测试中的系统资源分析之一:CPU

作者:马海琴 编辑:毕小烦 在日常的性能测试中,我们除了关注应用本身的性能,比如服务的响应时间、TPS 等,也需要关注服务器本身的资源使用情况,比如 CPU、内存、磁盘、网络等。当然,不光要分析服…

Java中string、int、char之间互相转换

String转int (1)Integer.parseInt(String) 方法 支持“负号”! String str "123"; int num Integer.parseInt(str); 如果这个字符串中间有字母会报错! (2)Integer.valueOf(String) 方法 …

白炽灯护眼还是LED护眼?2022年被央视315表扬的护眼灯

根据各方面对比下来,还是LED灯更护眼的,听我分析一下。 白炽灯是最早的出现的灯具,是由灯丝通电加热到白炽状态的,热辐射比较严重,灯光泛黄,并且白炽灯的光电转换效率低,费电,寿命太…

排序算法图解(六):归并排序

文章目录1 归并排序简介2 思路简介及图解3 代码实现写在最后1 归并排序简介 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并&#xf…

stm32cubemx hal学习记录:FreeRTOS软件定时器

一、配置过程 1、配置RCC、USART1、时钟84M 2、配置SYS,将Timebase Source修改为除滴答定时器外的其他定时器。 3、初始化LED的两个引脚、两个按键引脚 4、开启FreeRTOS,v1与v2版本不同,一般选用v1即可 5、打开定时器选项 6、创建两个定…

健身中心健身管理系统的设计与实现(源码+数据脚本+论文+技术文档)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Mysql进阶学习(三)排序查询与常见函数

Mysql进阶学习(三)排序查询与常见函数一、进阶3:排序查询1、语法:2、特点:3、排序方式3.1、按单个字段排序3.2、添加筛选条件再排序案例:查询部门编号>90的员工信息,并按员工编号降序3.3、按…

基于SSM实现企业生资源管理系统-ERP系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

FlinkSql+Stream综合使用+广播流

Flink状态管理状态的分类Flink容错机制State Vs CheckPointCheckPoint原理State状态后端/State存储介质状态恢复和重启策略SavePointFlink TableAPI&SQL案例广播流状态管理 状态的分类 State ManagerState–开发中推荐使用:Flink自动管理/优化,支持多…

day 32 文件上传二次渲染.htaccess变异免杀

前言: #知识点: 1、文件上传-二次渲染 2、文件上传-简单免杀变异 3、文件上传-.htaccess妙用 4、文件上传-PHP语言特性 #详细点: 1、检测层面:前端,后端等 2、检测内容:文件头,完整性&am…

拥抱 Spring 全新 OAuth 解决方案

以下全文 Spring Authorization Server 简称为: SAS 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护,该项目将不会再进行任何的迭代目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用 作为 SpringBoot 3.0 的…

设计文档编写要点

文章目录设计文档大致流程E-R关系图流程图UML图word制作目录设计文档大致流程 概要 表结构及其之间的关系(E-R 图:实体-联系图 Entity Relationship Diagram) 业务流程图、时序图(按照人操作的维度) 程序流程图、时序…

在X11图形环境下开启/关闭勿扰模式及其背后机制

开启/关闭勿扰模式 在Linux系统中、X11图形环境下,开启/关闭勿扰模式很简单,按照以下步骤操作即可: (1)鼠标左键点击右下角的“^”,即“显示隐藏的图标”。如下图所示: (2&#xf…

退火算法研究分析

模拟退火算法采用类似于模拟退火的过程。先在一个高温状态下,逐渐退火,在每个温度下慢慢冷却,最终达到物理基态(相当于算法找到最优解) 模拟退火算法属于贪心算法,在其过程中引入随机因素,以一定概率接收一…

Vue挂载(mount)和继承(extend)

vue.$mount 挂载 //index.html文件 <body><div id"app"></div> </body>//index.js文件 //1. 先看看普通的绑定 new Vue({el: #app,// el: document.getElementById(app) template: <div id"app">如果new Vue时候的option的…

【HTML5】弹性盒子实现导航栏和留言框

调CSS就像上方那样&#xff0c;代码逐渐变得扭曲&#xff0c;情绪逐渐变得暴躁。 目录 弹性盒子的核心属性 1、display设置元素生成框 2、弹性盒子比例划分 2.1flex-basis基本宽度 2.2flex-grow放大宽度 2.3flex-shrink缩小宽度 2.4单独的一个flex用法 3、flex-directi…

Windows安装配置Vagrant

1、下载 1.1、连接&#xff1a;https://developer.hashicorp.com/vagrant/downloads 1.2 、选择系统、版本、型号&#xff0c;然后下载 2、安装 2.1、双击运行下载的可执行文件&#xff0c;点击Next 2.2、先同意许可&#xff0c;然后点击Next 2.3、点击Change&#xff0c;选…

数理统计笔记2:总体均值的抽样分布

引言 数理统计笔记的第2篇总结了数理统计中样本均值的分布&#xff0c;可以帮助理解样本均值和总体均值分布之间的联系。举了一个例子可以加深理解&#xff0c;并且还补充了中心极限定理的知识。 一个关键的结论就此诞生了&#xff01;&#xff01;&#xff01; 样本均值的均值…