4、SySeVR复现——Generating slices

这篇具有很好参考价值的文章主要介绍了4、SySeVR复现——Generating slices。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、准备阶段

2、生成实验数据的CFG图

3、生成实验数据的PDG图

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

5、获取四种类型的SyVCs

6、提取SeVCs

7、获取漏洞的代码行号

8、给切片打标签

9、将标签写入切片


1、准备阶段

        实验数据我只用这些:

        (1)NVD

4、SySeVR复现——Generating slices

        (2)NVD_diff

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

         删除.joernIndex文件

4、SySeVR复现——Generating slices

         将实验数据导入joern

4、SySeVR复现——Generating slices

        开启neo4j数据库

4、SySeVR复现——Generating slices

2、生成实验数据的CFG图

mkdir cfg_db
python2 get_cfg_relation.py

4、SySeVR复现——Generating slices

         运行文件的结果:

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

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

 4、SySeVR复现——Generating slices

3、生成实验数据的PDG图

mkdir pdg_db
python2 complete_PDG.py

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

4、SySeVR复现——Generating slices

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

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

mkdir dict_call2cfgNodeID_funcID
python2 access_db_operate.py

4、SySeVR复现——Generating slices

         运行结果:

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

4、SySeVR复现——Generating slices

         (2)打开该pkl文件

4、SySeVR复现——Generating slices

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

5、获取四种类型的SyVCs

python2 points_get.py

4、SySeVR复现——Generating slices

         运行结果:

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

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

4、SySeVR复现——Generating slices

        (2)查看文件里是啥

        1)sensifunc_slice_points.pkl

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

4、SySeVR复现——Generating slices

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

 4、SySeVR复现——Generating slices

4、SySeVR复现——Generating slices

4、SySeVR复现——Generating slices

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

        2)pointuse_slice_points.pkl

 4、SySeVR复现——Generating slices

         3)arrayuse_slice_points.pkl

4、SySeVR复现——Generating slices

        4)integeroverflow_slice_points_new.pkl

4、SySeVR复现——Generating slices

6、提取SeVCs

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

4、SySeVR复现——Generating slices

         运行结果:

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

7、获取漏洞的代码行号

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

4、SySeVR复现——Generating slices

python2 dealfile.py

        运行结果:

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

4、SySeVR复现——Generating slices

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

        以CVE_2004_1151_PATCHED_sys32_ni_syscall.c文件为例:

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

 

8、给切片打标签

        对源文件做以下更改:

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

python2 make_label_nvd.py

        运行结果:

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

4、SySeVR复现——Generating slices

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

4、SySeVR复现——Generating slices

9、将标签写入切片

        对原文件做以下修改:

4、SySeVR复现——Generating slices

python2 data_preprocess.py

         运行结果:

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

4、SySeVR复现——Generating slices

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

        1)标记为0的api切片

4、SySeVR复现——Generating slices

        2)标记为1的api切片

4、SySeVR复现——Generating slices

 

        综上,生成了四种SyVCs切片文件,且都打了标签。下一步将进行切片的向量化。文章来源地址https://www.toymoban.com/news/detail-436133.html

到了这里,关于4、SySeVR复现——Generating slices的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 腾讯云coding平台平台inda目录遍历漏洞复现

    其实就是一个python的库可以遍历到,并不能遍历到别的路径下,后续可利用性不大,并且目前这个平台私有部署量不多,大多都是用腾讯云在线部署的。 CODING DevOps 是面向软件研发团队的一站式研发协作管理平台,提供从需求到设计、开发、构建、测试、发布到部署的全流程

    2024年02月11日
    浏览(30)
  • 微信小程序入门及开发准备,申请测试号以及小程序开发的两种方式,目录结构说明

    目录 1. 介绍 1.1 优点 1.2 开发方式 2. 开发准备 2.1 申请 2.2 申请测试号 2.2 小程序开发的两种方式 2.3 开发工具 3. 开发一个demo 3.1 创建项目 3.2 配置 3.3 常用框架 3.3 目录结构说明 3.4 新建组件 是一种不需要下载安装即可使用的应用,是一种 触手可及 的应用 可以借助微信的流量

    2024年02月05日
    浏览(33)
  • grafana 目录遍历(CVE-2021-43798)漏洞复现【VULFOCUS靶场-中级】--拿flag的历程

    漏洞名称 : grafana 目录遍历 (CVE-2021-43798) 漏洞描述 : Grafana 是一个用于监控和可观察性的开源平台。Grafana 版本 8.0.0-beta1 到 8.3.0(补丁版本除外)容易受到目录遍历,允许访问本地文件。易受攻击的 URL 路径是: grafana_host_url/public/plugins// ,其中是任何已安装插件的插件 ID。

    2024年02月15日
    浏览(31)
  • 矩母函数(Moment Generating Function)

    如果能求出一个随机变量的矩母函数,那么我们就可以通过求导来轻松地找到任意一个矩,而矩可以让我们了解分布的函数图像形状(类似于泰勒级数近似函数图像) 所有的矩并不总是可以唯一确定概率分布 复分析中拉普拉斯公式和傅里叶反演公式,用来确定什么时候可以

    2024年02月11日
    浏览(25)
  • SySeVR环境配置:joern-0.3.1、Neo4j-2.1.5、py2neo2.0

    最近希望在基于图神经网络的漏洞检测上有所推进,准备复现文章SySeVR: A Framework for Using Deep Learningto Detect Software Vulnerabilities开源代码,基本环境配置是python库环境以及joern-0.3.1、Neo4j-2.1.5环境的配置,环境具体要求如下 假期的时候就已经完成过joern的配置,光是安装就卡了我

    2023年04月08日
    浏览(30)
  • 为前端的同志们介绍一下生成式AI(Generating AI)

    生成式AI(Generating AI)是指以人工智能技术为基础,通过学习和生成算法,自动生成新的内容或解决问题的系统。在软件开发领域,生成式AI正在被应用于重塑开发流程和开发工具,以提高开发效率和质量。 生成式AI可以通过学习大量的开发代码和相关文档,理解软件开发的

    2024年01月16日
    浏览(27)
  • 论文阅读,ProtoGen: Automatically Generating Directory Cache Coherence Protocols(三)

    目录 一、Article:文献出处(方便再次搜索) (1)作者 (2)文献题目 (3)文献时间 (4)引用 二、Data:文献数据(总结归纳,方便理解) (1)背景介绍 (2)目的 (3)结论 (4)主要实现手段 4.1 系统模型和定义 4.2 ProtoGen概述 4.3 ProtoGen的输入,输出和限制 4.4 ProtoGen示例

    2024年02月19日
    浏览(26)
  • TTS算法笔记:MusicLM- Generating Music From Text(AI生成音乐)

    摘要: 介绍了一个以文本作为条件,生成高保真、长时间片的音乐音频。比如文本为“由扭曲的吉他重复段伴奏的平静的小提琴旋律”,MusicLM可以可以根据文本条件,生成24kHz采样率,分钟级别的连续音乐音频。 从摘要中可以得知,这篇文章解决的根本问题其实可以非常简

    2024年02月12日
    浏览(44)
  • Prompt2Model: Generating Deployable Models from Natural Language Instructions

    本文是LLM系列文章,针对《 Prompt2Model: Generating Deployable Models from Natural Language Instructions》的翻译。 大型语言模型(LLM)使今天的系统构建者能够通过提示创建有能力的NLP系统,他们只需要用自然语言描述任务并提供几个例子。然而,在其他方面,LLM是传统的专用NLP模型的倒退

    2024年02月10日
    浏览(32)
  • 论文阅读- 人工智能安全 TEXTBUGGER: Generating Adversarial Text Against Real-world Applications

     背景:  Deep Learning-based Text Understanding (DLTU)简介: 基于深度学习的文本理解(DLTU)广泛运用于问答、机器翻译和文本分类,情感分析(eg 电影评论分类)、有害内容检测(讽刺、讽刺、侮辱、骚扰和辱骂内容)等安全敏感应用中。 DLTU天生容易受到对抗性文本攻击,在对抗性

    2024年01月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包