论文学习_基于导向式模糊测试的二进制程序漏洞验证方法

1. 引言

研究背景及现存问题:基于代码相似性比较的漏洞检测方法属于静态分析方法,不可避免地存在误报率高的问题,对静态检测方法得到的疑似漏洞代码进行人工分析存在工作量大, 效率低的问题。解决该问题的有效的方案之一是使用导向式模糊测试方法,生成能够执行到疑似漏洞代码位置的测试用例,实现对静态检测结果的动态验证。当前导向式模糊测试多针对源码已知的程序,且对代码在引导模糊测试执行到特定代码位置所起不同作用的考虑并不充分,导致模糊测试的导向式不强。论文研究基于导向式模糊测试的二进制程序漏洞验证方法,对导向式模糊测试技术进行优化,以实现对静态漏洞检测结果的动态验证。

模糊测试技术简介:当前的主流模糊测试方法包括基于覆盖率的模糊测试导向式模糊测试两个主要方向。其中,将覆盖信息作为反馈指导生成新的测试用例,这种方法被称为基于代码覆盖的模糊测试方法,代表性工具有 AFL(american fuzzy lop)、Angora 和 FairFuzz。而导向式模糊测试方法以目标代码为导向,通过距离等执行反馈信息,生成到达目标区域的测试用例。导向式灰盒测试能够缓解基于覆盖率的方法存在的效率问题以及基于符号执行的模糊测试方法存在的扩展性问题,是发现漏洞的有效方法,已经成功应用于漏洞复现、补丁测试等场景, 是验证基于相似性比较得到的静态检测结果的有效手段。

导向式模糊测试技术存在的挑战:,导向式灰盒模糊测试技术面临两个主要挑战。第一个就是多是以源码已知的程序作为模糊测试的目标,对源码已知的程序在编译时插桩,得到充分的代码信息以提高模糊测试的导向性和有效性,如 AFLGo,而针对源码未知的二进制程序的研究相对较少;第二,对代码在进行导向目标漏洞所起的不同作用考虑并不充分。部分代码引导执行到漏洞代码所起的作用更大,因此在导向式灰盒模糊测试中需要考虑到代码的不均等性,这种代码不均等性已经得到了研究人员的关注,但是这种不均等性多是通过静态分析信息进行表征,如 Hawkeye 和 VUzzer 关注了边的不均等性。实际上动态执行信息更能够反映代码的不均等性,能够指引模糊测试向目标代码区域执行。此外,导向式模糊测试需要先确定目标代码区域。很多导向式模糊测试工具,如 AFLGo 和 Hawkeye 使用手工标记的方法确定目标代码区域。当前的自动化目标定位方法一般聚焦于特定漏洞类型的代码,如释放后重引用 (UAF) 漏洞或者内存访问错误相关的漏洞,通用性不强。因此,需要研究一种更加通用的对目标代码自动化定位的方法。

针对二进制程序的导向式模糊测试方法:为了提高导向式模糊测试的效率,论文考虑到代码在进行导向时的不均等性,基于遗传算法进行导向式模糊测试。将静态分析和动态执行过程中的与代码不均等性相关的反馈作用于新的测试用例的生成。其中,相似性比较的结果可以辅助导向式模糊测试方法对目标代码区域的自动定位,在训练好的语义学习模型基础上,利用代码相似性比较结果对函数进行不同权重的赋值,并结合函数权重和程序的控制流图对基本块进行初始权重赋值,基于遗传算法计算种子的权重并进行子代选择和新的测试用例生成,提高模糊测试的导向性。

2. 整体流程

论文研究的针对二进制程序的导向式模糊测试方法,解决了目标代码区域自动定位的通用方法,同时结合程序动态和静态信息,设计更加容易引导程序执行到目标代码区域的导向策略,并实现了原型系统 VDFuzz。原型系统主要包括目标识别器和导向式模糊测试器两个组成部分,如下图所示。

目标识别器:给定可能存在漏洞的二进制测试程序,论文设计目标识别器,使用代码相似性比较的方法,找到程序中的与已有漏洞相似的代码,从而确定可能存在漏洞的位置,达到目标代码区域自动定位的目的。因此,基于二进制语义学习模型中的特征提取方法,构建更精细的代码语义表征方法。对代码特征进行向量化之后,通过计算语义特征向量之间的距离,得到二进制测试程序与已有漏洞函数之间的相似性得分,相似性得分更高的函数存在漏洞的可能性更大,这些函数作为可能存在漏洞的重点代码片段,结合静态程序分析方法,再基本块和函数级别对不同代码再继续导向时的作用进行表示,作为导向模糊测试的执行目标位置。

导向式模糊测试器:基于代码再引导程

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cesium for unity 打包webgl失败,提示不支持

platform webgl is not supported with HDRP use the Vulkan graphics AR instead.

Nginx调度器

Nginx反向代理 反向代理架构 部署后端Web1服务器 部署后端Web2服务器 配置Nginx服务器,添加服务器池,实现反向代理功能 proxy主机安装nginx 修改/usr/local/nginx/conf/nginx.conf配置文件 重新加载配置 客户端使用火狐浏览器或curl多次访问p…

JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP

🚗二手车交易系统小程序:让买卖更轻松🔍 功能介绍 我的粉丝、我的关注、获赞、访客 我的动态、认证中心、我的团队、开通会员 免费估值、买二手车、我要卖车、车型选择 每日上新、底价专区、精准筛选、附近展厅商 车辆的详细信息、拨打电…

动态规划——123. 买卖股票的最佳时机 III

目录 1、题目链接 2、题目分析 1.状态表示 2.状态转移方程 3.初始化 4.填表 5.返回值 3、代码解析 1、题目链接 123. 买卖股票的最佳时机 III 2、题目分析 1.状态表示 由题目可知,我们分为两种状态,买入和卖出,又因为只能完成两次交易…

质点动力学

牛顿运动定律 动量守恒 动量定理 动量守恒定律 角动量守恒定律 动量与角动量的对比 例题 机械能守恒定律

cs与msf权限传递,以及mimikatz抓取win2012明文密码

mimikatz抓取win2012明文密码 一、启动cs服务端 二、启动cs客户端 三、创建监听器 四、生成脚本文件 五、选择存放路径 六、开启服务,让win2012能够通过网站下载 七、获得win2012控制权 八、抓取明文密码 mimikatz是可以抓明文的,mimikatz抓明文原理&a…

1966 ssm 流浪猫领养网站系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm 流浪猫领养网站系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/…

动手学自然语言处理:解读大模型背后的核心技术

自从 ChatGPT 横空出世以来,自然语言处理(Natural Language Processing,NLP) 研究领域就出现了一种消极的声音,认为大模型技术导致 NLP “死了”。在某乎上就有一条热门问答,大家热烈地讨论了这个问题。 有…

【ajax实战03】拦截器

一:axios拦截器 拦截器分类: 请求拦截器以及响应拦截器 拦截器作用: 在请求或响应被then或catch处理前拦截它们 二:请求拦截器 作用: 发起请求之前,调用一个配置函数,对请求参数进行设置…

Python 爬虫从入门到入狱之路一

实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索)爬 (将所有的网站的内容全部爬下来)取 (去掉对我们没用处的数据)处理数据(按照我们想要的方式存储和使用) 我们在之前写的爬虫程序中,都只是获取…

【STM32-启动文件 startup_stm32f103xe.s】

STM32-启动文件 startup_stm32f103xe.s ■ STM32-启动文件■ STM32-启动文件主要做了以下工作:■ STM32-启动文件指令■ STM32-启动文件代码详解■ 栈空间的开辟■ 栈空间大小 Stack_Size■ .map 文件的详细介绍■ 打开map文件 ■ 堆空间■ PRESERVE8 和 THUMB 指令…

Java面试问题(一)

一.Java语言具有的哪些特点 1.Java是纯面向对象语言,能够直接反应现实生活中的对象 2.具有平台无关性,利用Java虚拟机运行字节码文件,无论是在window、Linux还是macOS等其他平台对Java程序进行编译,编译后的程序可在其他平台上运行…

微软Edge浏览器全解析

发展历程 微软Edge浏览器是一款现代化的浏览器,最初于2015年发布,作为Internet Explorer(IE)的继任者,并随着Windows 10操作系统一同亮相。然而,早期的Edge浏览器基于EdgeHTML引擎开发,与市场上…

《Windows API每日一练》5.4 键盘消息和字符集

本节我们将通过实例来说明不同国家的语言、字符集和字体之间的差异,以及Windows系统是如何处理的。 本节必须掌握的知识点: 第31练:显示键盘消息 非英语键盘问题 字符集和字体 第32练:显示默认字体信息 第33练:创建逻…

格式化输出软件

一个给图片修改名字的小软件 功能: 输入文件名字,生成一个”当前时间文件名“的格式化内容到剪贴板方便改名 主界面有个复选框,勾选后会生成”文件名当前时间“的内容 演示: 输入无效字符时 代码: import sys from…

Leetcode Hot100之矩阵

1. 矩阵置零 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解题思路 题目要求进行原地更改,也就是不能使用额外的空间,因此我们可以使用第一行的元素来记录对应的…

java对word文档预设参数填值并生成

目录 (1)定义word文档模板 (2)模板二次处理 处理模板图片,不涉及图片可以跳过 处理模板内容 (3)java对word模板填值 (4)Notepad的XML Tools插件安装 工作上要搞一个…

基于STM32的智能家庭安防系统

目录 引言环境准备智能家庭安防系统基础代码实现:实现智能家庭安防系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:家庭安防管理与优化问题解决方案与优化收尾与总结 1. 引言 智能家庭安防系统通过使用ST…

flask与vue实现通过websocket通信

在一些情况下,我们需要实现前后端之间的时刻监听,本文是一篇工具文档,用于解决前后端之间使用websocket交互。 一. Flask的相关配置 1. 下载相关依赖库 如果还没有配置flask的话,需要先安装flask,同时为解决跨域问题&#xff0…

大模型自然语言生成自动驾驶可编辑仿真场景(其一 共十篇)

第一篇:LLM greater scene summarize 第二篇:LLM simulation Test effect 第三篇:LLM simulation driving scenario flow work 第四篇:LLM Algorithm flow description 第五篇:Configure the environment and back…