收藏 分销(赏)

基于污点分析的二进制程序漏洞检测系统设计与实现.pdf

上传人:自信****多点 文档编号:2337029 上传时间:2024-05-28 格式:PDF 页数:7 大小:2.44MB
下载 相关 举报
基于污点分析的二进制程序漏洞检测系统设计与实现.pdf_第1页
第1页 / 共7页
基于污点分析的二进制程序漏洞检测系统设计与实现.pdf_第2页
第2页 / 共7页
基于污点分析的二进制程序漏洞检测系统设计与实现.pdf_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 年第 期(第 卷总第 期)基于污点分析的二进制程序漏洞检测系统设计与实现罗治祥 向 栖 李乐言(工业和信息化部电子第五研究所 广东 广州 东北大学 软件学院 辽宁 沈阳 智能产品质量评价与可靠性保障技术工业和信息化部重点实验室 广东 广州)摘 要:针对现阶段二进制程序的静态分析多依赖于人工经验规则导致的低效率问题 以及大多数二进制程序漏洞扫描检测系统性能和可扩展性较低的问题 设计并且实现了一个简易版的基于污点分析的二进制程序漏洞检测系统 与现有的二进制程序漏洞检测系统相比 本文设计的系统改进了 指针分析中提出的算法 使得分析过程的数据抽象部分和指针分析部分得到了分离 进一步简化了污点分析 提

2、高了分析的性能和可扩展性 此外 将漏洞模式单独抽离出来 能够更加方便地进行漏洞模式的自定义关键词:二进制程序静态分析 指针分析 污点分析 漏洞模式中图分类号:文献标识码:/引用格式:罗治祥 向栖 李乐言.基于污点分析的二进制程序漏洞检测系统设计与实现.网络安全与数据治理 ():.():.:基金项目:国家重点研发计划 专项()引言近年来 随着计算机技术的不断发展 软件行业迅速发展 软件的体量、种类不断增大 同时 由于程序代码编写不规范 编写过程存在疏忽 或者缺乏软件安全方面的意识等 导致软件的安全性承受巨大威胁 针对这一现状 构建漏洞检测系统对软件进行安全检测是最行之有效的办法之一 可在一定程度

3、上发现并且及时消除潜在的漏洞软件的安全检测方法通常可以分为动态测试和静态分析两大类 静态分析这一方法相较于动态测试具有更高的覆盖率以及性能效率 现有的静态分析方案大多都基于源码级别进行分析 虽然可以在比较高的程度上满足软件安全需要 但是在许多真实的安全测试场景中 需要分析对象大多属于常见的二进制文件 比如商业软件、车机固件、嵌入式系统固件等 此时安全研究人员难以获得相应的源代码 源码级静态分析方案不网络与信息安全 年第 期(第 卷总第 期)再适用 现今商业化的二进制程序漏洞分析系统基本不具备可二次开发的扩展性 而开源的二进制程序漏洞分析系统 比如、等优秀的静态分析工具存在一些适用性问题 其中

4、和 正逐步发展为通用分析框架 而不仅仅专注于二进制漏洞扫描 这使得内部分析算法变得复杂 不便于后续的扩展和优化 是基于 的插件 使用 编写开发 提供的 比较有限 在可扩展性上有所欠缺 普通的二进制安全研究员无法有效地基于该工具进行自定义开发 因此 构建一款在性能和可扩展性上较为突出 同时也满足于真实场景需要的二进制程序漏洞检测系统刻不容缓针对上述问题 等基于 提出了一种较为简易的指针分析算法 该算法在使用 引擎支撑之后 在构建好的程序抽象数据上进行分析 使得性能得到较大的提升 对于获取二进制程序抽象数据而言普遍的做法是反编译二进制程序生成 中间表示 进一步对其进行优化和转换得到其 语法树 最后

5、依据 语法树得到程序抽象数据 比较好的工具有 、等 本文设计系统选取了 进行程序抽象数据获取 使用 特有的 从原生角度适配了 提供各项 接口 从可扩展性上兼具了 脚本跨平台、易扩展等优点 从性能方面 库中的 可以替代常见的 引擎 且性能方面相差无几 方案设计 本文研究工作本文将以污点分析为基础 对 中插件 反编译时的语法树 中相关的变量赋值、函数调用等进行抽象解析 使之成为特定的数据结构 随后使用 对抽象之后的数据进行指针分析 在此基础上加入污点分析 通过 得到相关指针结果 依据用户提供的污点 和定义的 结合缓冲区溢出、格式化字符串、堆内存使用不当等漏洞的特征 进一步检测出二进制程序中的漏洞

6、由于依赖的底层数据是基于 反编译出的语法树 因此是否支持不同架构的二进制程序只会取决于 是否能够对该架构程序进行反编译 此外由于使用 进行污点分析 其效率和准确度也会得到相应提高 综上所述 本论文基于污点分析 结合 反编译的语法树以及 对二进制程序进行漏洞检测 更加具有应用价值和研究意义 系统架构依据上述的程序语言以及逻辑构思 本系统构建的整体数据流程业务如图 所示图 系统架构图本系统采用/架构 并且以 设计模式进行设计 设计的系统架构如图 所示 由上至下系统主要分为用户交互层、数据处理层、指针/污点分析层、业务处理层四个主要层次在用户交互层中 依据 提供的各种接口 利用 结合 进行界面开发

7、旨在提供一个对用户友好的界面处理 该视图控制层中的主要功能有漏洞模式配置 用来选取漏洞分析模式以及管理污点数据库 还有审阅界面 当分析完成时 可以在此界面对漏洞报告进行查看、导出 以及污点路径的相关审阅工作在数据处理层中 将对程序进行一些预处理工作获取程序对应的语法树方便后续进行分析 然后还需要对程序代码进行数据抽象处理 分为/等多种数据 将程序解析成能够使得数据分析引擎进行分析的各项数据 最后需要对这些程序代码抽象出来的数据进行存储指针/污点分析层是主要的漏洞分析模块 获取上述得到的程序代码抽象数据 然后依据编写的 程序对程序抽象后的各类数据进行指针/污点分析 最终输出相关的分析结果业务处理

8、层主要依据指针/污点分析层得到的相关分析结果 建立相关的漏洞模式 依据漏洞模式的相关规则 尝试检测出漏洞 最后导出相关漏洞报告 针对污点数据/处理 该层提供显示污点路径以及污点路径表格化展示功能 算法整体设计 功能模块设计本系统的功能模块设计如图 所示 主要包括程序输入模块、程序预处理模块、污点分析模块、漏洞检测模块四个部分投稿网址:年第 期(第 卷总第 期)图 系统架构图图 功能模块设计图 详细设计()程序输入模块在该模块中 主要的功能为在 中导入二进制程序文件 选取漏洞分析模式 配置污点数据库/其中漏洞分析模式主要有如下三种:漏洞分析模式该模式将会自动分析当前二进制程序文件 依据指针分析结

9、果和相关的漏洞模式来寻找漏洞 并且提供漏洞分析报告析 仅 分析用户可以在污点数据/的管理界面使用下拉框选取污点数据 比如选取 函数中变量 作为 均以数据下列框、按钮等形式来选取 随后即可进行污点分析 依据用户给出的污点数据集合和指针分析结果 分析出污点数据可能的流向 并且提供相关的数据流报告/分析用户创建了对应的污点数据集合后 还可以选取用户特定感兴趣的函数放入 集合中 比如选取 函数中的 函数作为 等 随后开始进行污点分析判断在 集合是否被污点数据污染 并且提供相关的污染报告()预处理模块该模块的主要功能为获取程序语法树、程序数据抽象、抽象数据存储 基于 等提出指针分析算法改进的 抽象数据规

10、则算法如算法 所示 算法:抽象数据规则算法 (:)(:)(:)(:)(:)(:)(:)(:)(:)(:)网络与信息安全 年第 期(第 卷总第 期)由于需要确定各个函数中对应的变量所指向对象因此加入了 属性来进行区分依据上述的数据抽象规则 使用 与 提供的 进行交互 遍历语法树中所有可达函数将对应的变量声明、存储、赋值、上下文等信息进行抽象 以 格式保存在文件中()污点分析模块污点分析模块中主要包含抽象数据存储、指针分析、污点分析、指针分析结果存储几个功能 从文件中获取到存储的抽象数据之后 就可以按如下步骤进行分析 指针分析基于 提出指针分析算法改进的 指针分析规则算法如算法 所示 算法:指针分

11、析规则算法 (:).(:).(:).(:).()()()().()()().()()().()()()().()()()().(:)(:).(:).(:).()()()()()().(:).(:).()()()()().将不再需要 等提出的指针分析算法中的/变量 因为在反编译得到的语法树中 其函数名是唯一标识的 不存在相同的函数名称由于 反编译得到的语法树较为复杂 所提供的 种类繁多 实际进行数据抽象的流程较为复杂因此图 展示的仅为数据抽象时的流程简图图 程序数据抽象流程简图 污点分析同样也是基于 等提出指针分析算法改进的 污点分析规则 对应有数据污染源 (:)程序代码关键关注点 (:)污染数

12、据点(:)即把所有的污点数据产生点上下文:关联到产生的污点数据 即:中 传递污点数据算法如算法 所示 算法:污点传递规则算法()()()()().()()()()()().投稿网址:年第 期(第 卷总第 期)代表 点产生的污点数据在流向 点调用的函数 其参数位置为 但是由于 中一切即对象的思想 因此所有的函数过程传递都会用上污点传递 而在 中并不是很适合 所以 当指针分析结果中相关对象是被污染的对象 就将其加入到污点流动集 合 中 进 而 设 计 定 义 (:)依据用户选定的污点数据集合进行构造 代表用户选中函数 中的 变量作为污点 随后依据污点数据集合 将对应变量指向的对象进行污染方便后续进

13、行指针分析时传递污点对象 具体设计如算法 所示 算法:污点对象流动算法 (:)()()()().(:)()()().通过 将对象进行污染 当指针分析结果中存在污点对象 则标注出对应指向污点对象的变量 在对应的 脚本中获取到 集合 判断集合中调用的函数参数是否包含指向污点对象的变量即可 最后完成分析结果存储工作 方便进行下一步的漏洞分析或者污点分析报告()漏洞检测模块针对漏洞分析模块通常需要设定一些常见漏洞模式比如从 提供的语法树中获取 函数列表 判断调用 函数读取字符时读取数量是否大于当前缓冲区的大小 或者 中的源字符串长度是否大于目标字符串长度等一旦缓冲区溢出、格式化字符串漏洞、堆内存使用不

14、当等漏洞的模式规则被满足 即生成对应格式的报告以 的格式展示 设计如表 所示在污点路径显示功能设计中 依据污点分析结果以特定的格式生成对应的污点路径表格 以便后续给用户展示 设计如表 所示如表 所示 能看出选中的污点对象 在 函数中流经了、两个变量 更加便于用户着重分析污点数据的相关变更 最后将相关报告导出显示完成所有的污点/漏洞分析表 漏洞报告漏洞名称漏洞类型漏洞产生点漏洞产生关键变量关键变量指向的对象栈溢出 二次释放 表 污点路径报告流经污点变量名称流经污点变量产生/赋值地址污点对象流经污点变量所在函数 系统测试与分析 测试环境本文进行系统测试的测试环境如表 所示表 系统测试环境环境项目配

15、置及版本信息硬件环境 内存 硬盘 软件环境操作系统 反编译平台 静态分析工具 功能测试本节将使用二进制程序漏洞检测系统针对常见漏洞进行功能测试 在 平 台 使 用 编译代码 使用命令为 /得到程序 放入 进行分析分析过程中在 的输出窗口会输出过程数据如图 所示 点击查看报告 如图 所示图 分析过程输出图网络与信息安全 年第 期(第 卷总第 期)图 栈溢出污点报告图其中 污点对象流经了 和 符合程序的逻辑 切换分析模式 漏洞分析结果如图 所示图 栈溢出漏洞报告图此外针对格式化字符串、二次释放漏洞也进行了相关的测试 得到结果和栈溢出漏洞测试类似综上所述 本节涉及的污点路径探索测试、漏洞检测测试 从

16、整体上来说大致符合预期 能够检测出较为简单的漏洞以及污点路径 性能测试本文选取 测试集 就、两种架构与 的测试结构进行比较对照 此外 由于本文实现的系统是漏洞检测原型系统 在漏洞模式检测上仅实现、三种 中指定函数造成的漏洞检测 因此 本文从 中随机筛选了 中 个关于 的格式化字符串漏洞 中 个关于 的二次释放漏洞 中 个关于 函数的溢出写漏洞测试用例进行测试 表 和表 展示的是 和 架构下的三种 的检测能力与 的对比结果 其中缩写英文对应为 本文实现的原型系统为 统计得到如图 所示漏报率误报率检测对比统计图 结果表明 本文设计的原型系统的性能测试结果在目前所支持的 类型上取得一定优势表 架构

17、检测能力对比 类型/工具名称数量/表 架构 检测能力对比 类型/工具名称数量/结论本文主要研究了基于污点分析的二进制程序漏洞检测系统设计与实现 尝试通过基于 反编译的语法树来进行指针分析 寻找漏洞以及实现污点路径探索功能本文根据对目前二进制程序漏洞检测系统的研究现状的参考 首先确定了本系统的总体架构、数据业务流程 根据系统分析设计 对基于污点分析的二进制程序漏洞检测系统进行实现 在实现过程中 采用 语言进行程序编写 使用了 提供的相关接口以及用于指针/污点分析的 引擎 在系统实现之后 依据系统测试相关原理 使用简单的漏洞代码编写的二进制程序对系统的各个功能模块进行了测试 测试过程中 本系统实现

18、的各个功能模块能够稳定运行并投入使用 检测出较为简单的栈溢出、格式化字符串、二次释放等漏洞本文具有以下创新点:()在 反编译结果的基础上进行指针/污点分析的相关研究还不是很多 在此基础上实现完整可用的基于污点分析的二进制程序漏洞检测系统()不同于使用 进行 源代码形式的指针/污点分析 本文使用 对二进制源程序的语法树形式进行指针/污点分析研究()本系统实现的编程语言全部为 脚本 具有高度的可扩展性、兼容性、可移植性等系统实用性方面仍旧存在的不足:()本系统的测试用例都是在 平台下使用 进行编译生成的 对于其他平台是否适用还有待进一步检验()由于本系统只是依据程序中的一些数据结构以及函数调用等关

19、系进行数据抽象 因此具备诸如循环、递归等复杂逻辑时的适用性有待检验()本系统暂时只实现了栈溢出漏洞、格式化字符串漏洞、二次释放漏洞模式建立 适用范围较小 后续将对基于污点分析的二进制程序漏洞检测系统进行完善投稿网址:年第 期(第 卷总第 期)图 /架构下的漏洞检测漏报率/误报率对比图 参考文献 .():.:/:.:():/():./.谭添 马晓星 许畅 等.指针分析综述.计算机研究与发展 ():.().():.:.():.(收稿日期:)作者简介:罗治祥()男 本科 主要研究方向:漏洞挖掘、网络安全、车联网信息安全向栖()女 本科 主要研究方向:网络安全、信息安全李乐言()通信作者 男 本科 工程师 主要研究方向:信息安全攻防技术和质量评价技术、智能产品及汽车信息安全网络与信息安全

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服