緩衝區過讀
在計算機安全和程序設計中,緩衝區過讀[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 (頁面存檔備份,存於網際網路檔案館)
這是一篇計算機安全小作品。您可以透過編輯或修訂擴充其內容。 |