zoukankan      html  css  js  c++  java
  • 基于可执行代码的缓冲区溢出检测模型

    https://baike.baidu.com/item/可执行代码

    缓冲区是程序为存储数据而分配的连续的具有一定长度的内存空间。而缓冲区溢出是指,写入缓冲区的数据长度大于缓冲区分配的长度,使得数据写到相邻的内存中而覆盖掉其中已有的数据。若覆盖掉的数据恰好是程序的入口,那么程序将会跳转到写入的数据指定的地址去执行。攻击者通过精心构造填充数据,可以使程序跳转到指定的代码处执行,从而进行非法操作。
    当前缓冲区溢出检测技术主要分为 2 类:静态检测和动态检测。
    静态检测主要是通过对源代码的审查和分析来发现缓冲区溢出漏洞。由于不需要运行程序,因此,检测效率较高,代价较小;缺点是大都依赖于源代码且有较高的误报率和漏报率。
    动态检测技术是在程序的运行过程中,通过监测程序的运行状态来检测是否发生了缓冲区溢出。该类技术可以通过模糊测试 (fuzz testing) 主动诱发, 也可以通过修改软硬件平台被动监测 ,以发现漏洞。前者的优点是误报率低;缺点是测试充分性无法保证,可能有较高的漏报率。后者的优点是漏报率低;缺点是代价大,且大都无法防御拒绝服务攻击。
    根据缓冲区溢出原理,提出一种基于可执行代码的缓冲区溢出检测模型,给出该模型的理论基础,描述模型构建的过程,提出新的缓冲区引用实例的识别方法。 该模型将可执行代码反汇编为汇编代码, 建立函数调用关系图和控制流图, 分析缓冲区变量及其引用实例,从缓冲区引用实例逆程序流方向归结路径约束,通过约束求解判断缓冲区溢出可能与否。 [3] 
     
     
  • 相关阅读:
    SVG路径字符串格式
    PHP pdf转化为图片(PNG)
    将博客搬至CSDN
    SAC学习笔记(一)——SAC安装
    《把时间当作朋友》读书笔记(十四)--积累(二)
    《把时间当作朋友》读书笔记(十四)--积累(一)
    《把时间当作朋友》读书笔记(十三)-- 应用(二)
    《把时间当作朋友》读书笔记(十二)-- 应用(一)
    《把时间当作朋友》读书笔记(十一)-- 交流
    Wixtools打包工具实战总结
  • 原文地址:https://www.cnblogs.com/rsapaper/p/10482551.html
Copyright © 2011-2022 走看看