緩衝區過讀

本页使用了标题或全文手工转换,现处于香港繁体模式
求聞百科,共筆求聞

電腦安全程式設計中,緩衝區過讀[1]是一類程式錯誤,即程式緩衝器讀出數據時超出了邊界,而讀取了(或試圖讀取)相鄰的記憶體。這是有違記憶體安全的一個例子。

通過構造惡意輸入,使得缺乏邊界檢查的程式讀取不該存取到的記憶體,可以觸發緩衝區過讀,如在心臟出血漏洞里的那樣。引發的原因也可能僅僅是編程中的錯誤。這可能會導致異常的程式行為,包括記憶體存取錯誤、不正確的結果、崩潰或系統安全性損害。因而,有許多漏洞都因其而生,還可能被惡意利用以存取特權資訊。

通常與緩衝區過讀相聯絡的程式語言語言套件括CC++,這些語言都沒有提供內建的保護機制,以防止使用指標存取虛擬記憶體任意位置的數據,並且不會自動檢查讀取該記憶體塊的數據是否安全;對應的例子如試圖讀取比陣列更多的元素,以及沒有向空終止字串末尾追加終止符。邊界檢查可以防止緩衝區過讀[2],而模糊測試有助於檢測出這些錯誤。

參見

參考

  1. CWE – CWE-126: Buffer Over-read (2.6). Cwe.mitre.org. 2014-02-18 [2014-04-10]. 
  2. 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]. 

外部連結