缓冲区过读
在电脑安全和程式设计中,缓冲区过读[1]是一类程序错误,即程序从缓冲器读出数据时超出了边界,而读取了(或试图读取)相邻的内存。这是有违内存安全的动作。
通过构造恶意输入,使得缺乏边界检查的程序读取不该访问到的内存,可以触发缓冲区过读,如心脏出血漏洞中所出现的情形。引发此一错误的原因也可能仅仅是编程中的错误。这可能会导致异常的程序行为,包括内存访问错误、不正确的结果、崩溃或系统安全性损害。因而,有许多漏洞都因其而生,还可能被恶意利用以访问特权资讯。
通常与缓冲区过读相联络的编程语言语言包括C和C++,这些语言都没有提供内建的保护机制,以防止使用指针访问虚拟内存任意位置的数据,并且不会自动检查读取该内存块的数据是否安全;对应的例子如试图读取比数组更多的元素,以及没有向空终止字符串末尾追加终止符。边界检查可以防止缓冲区过读[2],而模糊测试有助于检测出这些错误。
参见
参考
- ^ CWE – CWE-126: Buffer Over-read (2.6). Cwe.mitre.org. February 18, 2014 [April 10, 2014]. (原始内容存档于2018-02-08).
- ^ Yves Younan; Wouter Joosen; Frank Piessens. Efficient protection against heap-based buffer overflows without resorting to magic (PDF). Dept. of Computer Science, Katholieke Universiteit Leuven. 2013-02-25 [2014-04-24]. (原始内容 (PDF)存档于2013-09-05).
外部链接
- PHP DateInterval Heap Buffer Overread Denial of Service
- PHP Bug #66060: Heap buffer over-read in DateInterval (页面存档备份,存于互联网档案馆)
这是一篇电脑安全小作品。您可以通过编辑或修订扩充其内容。 |