缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行为,是一种非常普遍、非常危险的漏洞,也是最常见的网络攻击手段,该攻击虽然简单但危害性极大。那么缓冲区溢出攻击是什么?如何防御?本文详细介绍一下。

  缓冲区溢出攻击是什么?

  缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动等后果。

  缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是与所分配的存储空间相匹配,这就是为缓冲区溢出埋下隐患。操作系统所使用的缓冲区,又被称为堆栈,在各个操作进程之间,指令会被临时储存在堆栈当中,堆栈也会出现缓冲区溢出。

  缓冲区溢出攻击如何防御?

  1、严格编写程序代码

  众所周知,编写正确严格的代码是一件非常耗时耗力的工作,虽然软件的发展经历了半个世纪的时间,但是依旧存在着漏洞程序,所以人们开发了一些工具和技术来帮助经验不足的程序员来编写安全的程序。比如说高级查错工具,如fault injection等,这些工具的目的就是在于通过人为随机的产生一些缓冲区溢出来寻找代码的安全漏洞,可是由于C语言的本身特点,这些工具不能找出所有的缓冲区溢出漏洞,因此侦错技术只是被用来减少缓冲区溢出漏洞,并不能完全消灭,想要完全消灭这类漏洞,就需要程序员严格编写代码。

  2、禁止执行堆栈数据段

  在进行系统操作时数据地址空间不可执行,从而禁止攻击者执行被植入的攻击代码,这种措施在一定的程度上也对缓冲区溢出攻击起到了防范作用。但是攻击者不一定非要通过植入攻击代码来实现缓冲区溢出攻击,所以这种方法并不能彻底解决缓冲区溢出攻击。

  3、利用程序编译器的边界检查

  植入攻击代码时引起缓冲区溢出攻击的一个方面,改变程序执行的流程则是另一个方面,而利用程序编译器的边界检查则使得缓冲区溢出攻击不可能实现,从而完全消除了缓冲区溢出攻击的威胁。

  4、指针完全性检查

  程序指针完整性检查和边界检查略有不同,程序指针完整性检查在程序指针被改变之前检测,因此即使攻击者成功改变了程序的指针,也会因为先前检测到指针的变化而失效,这样虽然不能完全解决问题,但是他确实阻止了大多数的缓冲区溢出攻击,并且这种方法在性能方面有很大优势,兼容性特别优良。

缓冲区溢出攻击指什么?如何防御?相关推荐

  1. 缓冲区溢出攻击的防御技术

    缓冲区溢出攻击的防御技术 目前产品: 主要是从静态的源代码安全审核到动态的程序运行期间的防护. 源码级保护: 编写没有漏洞的安全代码是防范缓冲区溢出攻击的最好方法(非常困难) 运行期间的保护: 研究的 ...

  2. 网络安全——缓冲区溢出攻击

    1.缓冲区溢出概述 什么是缓冲区?它是指程序运行期间,在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型.所谓溢出,其实就是所填充的数据超出了原有的缓冲区边界,并非法占据了另一段内存 ...

  3. 缓冲区溢出攻击(Buffer Overflows实验笔记)

    缓冲区溢出是什么? 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数 ...

  4. 黑客中级技术--缓冲区溢出攻击(转)

    黑客中级技术--缓冲区溢出攻击(转)[@more@] 缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统当机.重新启动等后果. ...

  5. 缓冲区溢出攻击-C语言中的危险函数

    1.缓冲区溢出攻击 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上.理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符.但是绝大多 ...

  6. 【网络攻防技术】实验四——缓冲区溢出攻击实验

    文章目录 一.实验题目 二.实验步骤 Task1: Get Familiar with the Shellcod Task2: Level-1 Attack Task 3: Level-2 Attac ...

  7. Linux下缓冲区溢出攻击的原理及对策

    前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现 ...

  8. 划重点!关于缓冲区溢出攻击,这份防范策略一定要收好!

    一.缓冲区溢出攻击的基本概念 缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统宕机.重新启动等后果.更为严重的是,可以利用它 ...

  9. 详解缓冲区溢出攻击(超级详细)

    一.预备知识 预备知识指需要先理解main函数反汇编代码. 注意: 1.实验环境 ① VMware® Workstation 16 Pro ② 32位的Linux系统:Ubuntu16.04 2.gc ...

最新文章

  1. 关于Unity中场景的导入与导出(专题九)
  2. 刷题-CC150-Java实现
  3. easyui扩展-日期范围选择.
  4. Alibaba Druid连接池接入
  5. xss攻击中受影响的是服务器还是客户端,安全测试基础之 XSS
  6. 设计模式学习总结(一)——设计原则与UML统一建模语言
  7. javascript基础系列:数组常用方法解析
  8. 信息安全风险评估项目工序与流程
  9. 扫码连wifi小程序源码
  10. C++,error c2662 cannot convert 'this' pointer from 'const A' to 'A '
  11. tftp命令下载或上传文件
  12. nginx配置简单图片显示
  13. MRCP协议-提供语音识别(ASR)与语音合成服务(TTS)
  14. ADS129X芯片中文资料(二)——模拟功能部分介绍
  15. 如何做到长期稳定的禅修?
  16. python绘制对数函数
  17. 计算机软件可以用虚拟串口吗,虚拟串口以及在Proteus中的使用
  18. passive-interface OSPF 的被动接口
  19. Unity3D网络实战笔记-第三章
  20. SG186电力营销业务应用ORACLE数据库复制软件招标公告

热门文章

  1. Linux C alarm的使用
  2. 数字图像处理学习笔记(三)——空间分辨率和灰度分辨率、等偏爱曲线
  3. SiamCAR: Siamese Fully Convolutional Classification and Regression for Visual Tracking
  4. 欧式距离和曼哈顿距离的比较
  5. mybatis实战:一、mybatis入门(配置、一些问题的解决)
  6. 查找计算机里包含相关文字,win10系统搜索文件中包含的文字来找到该文件的详细方案...
  7. 字典的基础及字典的使用实例
  8. pyecharts制作地图Map
  9. Matlab多项式和符号函数简介
  10. 数仓工具—Hive Beeline(21)