电子科技大学计算机系统与网络安全技术课件第8章 计算机系统安全(缓冲区溢出).pptVIP

  • 28
  • 0
  • 约1.43万字
  • 约 65页
  • 2019-05-06 发布于广东
  • 举报

电子科技大学计算机系统与网络安全技术课件第8章 计算机系统安全(缓冲区溢出).ppt

计算系统与网络安全 Computer System and Network Security 电子科技大学 计算机科学与工程学院 第8章 计算机系统安全(缓冲区溢出) 第8章 计算机系统安全(缓冲区溢出) 缓冲溢出概述 1. 缓冲区的定义 连续的一段存储空间。 2. 缓冲区溢出的定义 指写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。 Buffer overflow is the result of writing more data into a buffer than the buffer can hold. Example Consider the following code Example (contd.) Now we input 4+4+3 ‘A’s instead of 4 ‘A’s. 缓冲溢出概述(续) 3. 缓冲区溢出的危害 利用缓冲区溢出实现在本地或者远程系统上实现任意执行代码的目的,从而进一步达到对被攻击系统的完全掌控; 利用缓冲区溢出进行DoS(Denial of Service)攻击; 利用缓冲区溢出破坏关键数据,使系统的稳定性和有效性受到不同程度的影响; 实现蠕虫程序 1988 Robert T. Morris蠕虫利用UNIX 系统中In, the Morris Internet worm exploited buffer overflow vulnerability in fingerd server program on UNIX systems. 曾在2001年造成大约26亿美元损失的Code Red蠕虫及其变体就是利用了Microsoft IIS中的缓冲区溢出进行攻击 2002年的Sapphire蠕虫和2004年的Witty蠕虫也都利用了缓冲区溢出进行攻击。 In 2004, the Witty worm takes advantage of a buffer overflow flaw in several Internet Security Systems? (ISS) products. 缓冲溢出概述(续) 4. 造成缓冲区溢出的根本原因 代码在操作缓冲区时,没有有效地对缓冲区边界进行检查,使得写入缓冲区的数据量超过缓冲区能够容纳的范围,从而导致溢出的数据改写了与该缓冲区相邻存储单元的内容。 C and C++ are the most common languages to create buffer overflows. C语言中许多字符串处理函数如:Strcpy、Strcat、Gets、Sprintf等都没有对数组越界加以检测和限制。 缓冲溢出概述(续) Microsoft Windows,Linux/Unix,Apple Macintosh等主流操作系统无一例外存在缓冲区溢出问题。 存在缓冲区溢出问题的应用程序也广泛存在,涉及数据库系统例如Microsoft SQL Server 2000, Oracle9i,网络服务(Microsoft IIS),网络协议实现(例如OpenSSL),多媒体软件(Apple QuickTime)等等 缓冲溢出概述(续) 缓冲区溢出可以成为攻击者实现攻击目标的手段,但是单纯地溢出缓冲区并不能达到攻击的目的。 在绝大多数情况下,一旦程序中发生缓冲区溢出,系统会立即中止程序并报告“fault segment”。例如缓冲区溢出,将使返回地址改写为一个非法的、不存在的地址,从而出现core dump错误,不能达到攻击目的。 只有对缓冲区溢出“适当地”加以利用,攻击者才能通过其实现攻击目标。 第8章 计算机系统安全(缓冲区溢出) 缓冲溢出攻击的原理 1. 缓冲区溢出攻击模式 缓冲溢出攻击的原理(续) 2. 缓冲区溢出可能发生的位置 预备知识点 进程在内存中的布局 缓冲溢出攻击的原理(续) 代码段/文本段 用于放置程序的可执行代码 (机器码) 。 数据段 用于放置已初始化的全局变量和已初始化的局部静态变量。 BSS (Block Started by Symbol)段 用于放置未初始化的全局变量和未初始化的局部静态变量。 堆 用于动态分配内存。 堆栈段 用于存放函数的参数,返回地址,调用函数的栈基址以及局部非静态变量。 进程的环境变量和参数 缓冲溢出攻击的原理(续) 2. 缓冲区溢出可能发生的位置(续) 堆栈(stack) 堆(heap) 数据段(data) BSS段 缓冲溢出攻击的原理(续) 2. 缓冲区溢出可能发生的位置(续) 堆栈(stack) 堆(heap) 数据段(data) BSS段 被调函数堆栈布局 堆栈采用后进先出(LIFO)的方式管理数据,这种方式是实现函数嵌

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档