缓冲区溢出漏洞分析及检测技术进展

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:mmghb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:如今,信息技术高速发展,各式各样的软件如雨后春笋一般出现。然而,由于软件自身存在的漏洞而被攻击的事件也屡见不鲜,缓冲区溢出漏洞便是其中的代表之一。伴随信息安全技术的不断发展,缓冲区溢出漏洞的检测技术也在不断发展。该文将首先介绍有关缓冲区及缓冲区溢出漏洞的知识,再阐述近几年关于缓冲区溢出漏洞检测的新技术,最后是对关于缓冲区未来可能发展地探讨,以期读者可以對缓冲区溢出漏洞及其相关检测技术有大致的认识。
  关键词:缓冲区;缓冲区溢出漏洞;缓冲区漏洞检测技术
  中图分类号:TP311 文献标识码:A
  文章编号:1009-3044(2020)13-0057-03
  1绪言
  今天的大多数计算机系统都给予冯·诺依曼体系结构,其中一个重要思想就是将数据和程序均放到同样的存储空间中,使得攻击者很容易利用缓冲区溢出漏洞进行攻击。而且C/c 迄今为止仍然是最流行的语言,将其作为开发语言的项目和软件也不计其数。然而C/C 提供了大量的封装函数使得技术人员可以直接或间接的手动操作和分配内存,这也恰恰造成了缓冲区溢出漏洞的产生。一旦数据的移动,API的调用缺少所需的边界检测或输入长度验证时就极易发生缓冲区溢出漏洞,轻则会使编辑器抛出异常,程序无法正常执行,重则会造成内存泄漏,数据被恶意篡改,甚至被黑客利用以达到不法目的。
  根据CNNVD 2020年以来每周的漏洞报告文档中,缓冲区溢出漏洞的所占总漏洞数量的百分比一直高居前五。360CERT发布2017年漏洞态势一回顾及分析中缓冲区溢出漏洞所占的比例高达16.66%。在中国科学院大学国家计算机网络入侵防范中心发布的2019年1月十大重要安全漏洞分析中将缓冲区溢出漏洞作为第九名,在2019年2月十大重要安全漏洞分析也有多个漏洞问题涉及缓冲区。因此本文针对近几年出现的缓冲区溢出漏洞技术进行整理、分析、探讨和总结,以期帮助科技人员进行更好的研究及应用。
  本文将首先介绍有关缓冲区溢出漏洞的基本知识,帮助读者建立一个基本的知识框架,其次将近几年新出现的缓冲区漏洞溢出检测技术进行分类并在分类的基础上对一些典型或新出现的技术进行阐述,最后对论文进行总结,并提出未来可能的热点研究方向。
  2缓冲区溢出漏洞的基础知识
  2.1栈缓冲区溢出
  缓冲区溢出是指当计算机要填充的数据长度超过缓冲区自身所规定容量,溢出的数据覆盖了合法数据或影响到了指令的执行。在实际情况下,绝大多数程序都会假设所提供的数据长度小于等于所分配的缓冲区空间,且一般不会主动检测边界条件。这就为缓冲区溢出漏洞的产生埋下了伏笔。操作系统使用的缓冲区,主要为堆和堆栈,缓冲区漏洞溢出最致命的即“堆和堆栈溢出”。
  堆栈(简称栈)是操作系统提供的一种先进后出的数据结构,操作系统一般提供了两个专门的寄存器来存储栈顶指针和栈底指针,其中ESP寄存器存储指向栈顶的指针,EBP寄存器存储指向栈底的指针,EIP寄存器存储了下一条指令执行的地址。栈缓冲区溢出的本质即某个栈帧发生溢出,且溢出的内容覆盖了EIP寄存器的内容,改变了原本下一条指令的地址,从而导致程序无法正常执行或被黑客利用执行恶意代码m。因此栈溢出多发生在程序调用或对缓冲区操作的情况下。
  2.2堆缓冲区溢出
  堆也是一种基本的数据结构,它是可由程序员自行分配,由低地址向高地址增长的不连续的线性内存区域。堆溢出是指程序向某个堆块中写入的字节数超过了堆块本身可使用的字节数(之所以是可使用而不是用户申请的字节数,是因为系统会对用户所申请的字节数进行调整,这也导致可利用的字节数都不小于用户申请的字节数),因而导致了数据溢出,并覆盖到物理相邻的高地址的下一个堆块。堆缓冲区溢出并不像栈缓冲区溢出一样可以控制EIP,其精髓为精心构造的数据去溢出下一个块的块首,改写块首中的前向指针和后向指针,从而访问任意内存区域。
  3静态检测技术
  缓冲区溢出漏洞一直是计算机研究领域的一个活跃的研究主题,关于其检测技术亦不断更新。静态检测技术拥有无须运行程序,消耗资源少,直接分析程序源码并定准问题所在位置,从而便于程序人员进行修改等优势。然而由于缺乏程序运行所能提供的信息,所以如何减少静态检测的误报率和漏报率一直是评判静态检测技术的两个重要指标嘲。除此之外,吞吐量也是检验静态检测技术是否实时、高效的标准之一。
  Peng Luo等人通过研究发现有1/3的缓冲区溢出漏洞是有循环引起的,因此他们使用CIL实现了DBloop用来定位可以引起缓冲区溢出的循环。DBloop主要使用数组和指针分析循环和数据移动的相应操作,以定位循环缓冲区溢出(BoF)。DBloop的关键步骤是首先获取缓冲区的大小,例如数组或分配的堆内存块的大小,然后检查目标循环的数据移动是否超出了缓冲区的范围。具体来说,DBloop包含四个步骤来本地化循环BoF:(1)使用数组或指针识别包含数据移动操作的可疑循环。(2)对目标循环应用代码切片,并根据循环是否嵌套以及循环是否包含路径对目标循环进行分类。(3)执行可追踪性分析以获得缓冲区的界限。使用约束求解标识BoF。他们使用DBloop分析从60个应用程序中收集到的68个漏洞并与商业工具Checkmarx和开放源代码工具Splint分析出的结果进行对比,DBloop成功定位了由循环引起的57个BoF而Checkmarx和SDlint仅分别检测到4个或3个。
  Lili xu等人则将研究重点放在整数溢出导致到缓冲区溢出(IO2801)漏洞。他们认为尽管已经进行了许多工作来减轻整数溢出,但是现有工具要么误报率很高,要么吞吐量很低。为了解决这些问题,他们提出了一种新的静态分析框架(LAID)。它首先利用过程间数据流分析和污点分析来准确识别潜在的102BO漏洞。然后,它使用轻量级方法进一步滤除误报。具体来说,它生成表示可以触发潜在102BO漏洞的条件的约束((int)check 1
其他文献
目的:评价X线平片对滑膜骨软骨瘤病的诊断价值。方法:回顾性分析10例滑膜骨软骨瘤病的X线表现。结果:10例病变关节周围均见多枚钙化或骨化结节影,形态呈点状、砂粒状、圆形或卵
在线开放课程的出现,促进了高等教育教学模式转变与教育质量提升,高等教育资源数字化趋势也越发明显,现有MOOC平台实践类的课程有限,该文简要分析了在线开放课程的作用,分析
中密度纤维板是目前家具制作市场上的重要原材料,其产品的美观性是决定其商业价值的重要因素之一。目前针对中密度纤维板外观上的表面粗糙缺陷通常采用人工检测方法,为实现板面粗糙的自动检测,本文提出一种基于SVM的中密度纤维板表面粗糙检测方法。采用线阵相机搭配远心镜头完成样品图像的采集,计算图像灰度均值与标准差,利用灰度共生矩阵提取能量、逆差分矩等5个特征,构建SVM进行训练、识别。训练图库70张,测试图库
摘要:可拓物元分析基于我国学者蔡文在1983年创立的可拓理论而得来的,其根本是建立可以拓展的域空间,将事物属性按照级别转换成一定的量值范围并最终计算得出相应程度。目前该方法的运用范围覆盖经济、工程及数学领域等,但是在高校教学教育中的运用尚不多见,文章中选取高校网络协同授课的质量评价与该分析方法相结合,旨在建立适用于高校网络协同授课评价的方式并积极拓展该方法在教育领域中的运用。  关键词:物元;网络
网络能力与企业绩效的研究一直是学术界的热点,很多学者从不同的视角对网络能力和企业绩效之间的关系进行研究,从而发现通过网络能力的提升,可以进一步强化企业创新绩效.本文
摘要:该研究针对SSH匿名网络难以追踪的问题,提出了网站指纹攻击方法,就网站的时间行为对攻击的影响亟待解决。本文针对该问题提出一种基于自适应决策的SSH匿名网络网站指纹攻击方法。该方法首先收集上行流量作为指纹特征,再使用Adaptive Hoeffding Tree和Adaptive Hoeffding Option Tree算法生成指纹特征库,来实现指纹库的不断更新,以应变动态网站的时间行为对指
在大学上课的时间相对不会太集中,给学生的课余时间也就相对较多,有很多自由安排的时间。很多人在大学中能够利用好课余时间学习到很多东西,为自己的人生目标打下坚实的基础,
目的:探讨对妊娠合并肺结核的病人进行临床护理干预的效果。方法:抽取我院2006年1月-2011年1月收治的妊娠期肺结核病人15例,对其进行一般护理、专科护理、健康教育。结果:15例病
随着近年来高教的快速发展,学校的信息系统越来越复杂,数据中心面临多种挑战,比如,业务连续性无法保障,数据日益变得庞大,存储性能瓶颈出现,多种类型存储系统不便于管理,无法
智慧校园是教育信息化的高级状态,国内各类型学校都在积极地进行智慧校园建设.不同学校的学生规模、教育对象、资金实力、开设课程等实际情况存在很大的差异.本文以柳州市第