緩衝區溢位

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
buffer overflow」的各地常用名稱
中國大陸緩衝區溢出
臺灣緩衝區溢位

緩衝區溢位(buffer overflow),在電腦學上是指標對程式設計缺陷,向程式輸入緩衝區寫入使之溢位的內容(通常是超過緩衝區能儲存的最大數據量的數據),從而破壞程式執行、趁着中斷之際並取得程式乃至系統的控制權。

緩衝區溢位原指當某個數據超過了處理程式回傳堆疊地址限制的範圍時,程式出現的異常操作。造成此現象的原因有:

黑客Unix的內核發現通過緩衝區溢位可以控制內核空間劫持控制流程獲得系統的最高等級權限,而成為攻擊手段之一。也有人發現相同的問題也會出現在Windows作業系統上,以致其成為黑客最為常用的攻擊手段,蠕蟲病毒利用作業系統高危漏洞進行的破壞與大規模傳播均是利用此技術。比較知名的蠕蟲病毒衝擊波蠕蟲,就基於Windows作業系統的緩衝區溢位漏洞。

例如一個用途是對SONY的掌上遊戲機PSP-3000的破解,通過特殊的溢位圖片,PSP可以執行非官方的程式與遊戲。同樣在諾基亞智能電話作業系統Symbian OS中發現漏洞用戶可以突破限制執行需要DRM權限或檔案系統權限等系統權限的應用程式。

緩衝區溢位攻擊從理論上來講可以用於攻擊任何有相關缺陷的程式,包括對防毒軟件防火牆等安全產品的攻擊以及對銀行程式的攻擊。在嵌入式裝置系統上也可能被利用,例如PSP智能電話等。

在部分情況下,當一般程式(除了驅動和作業系統內核)發生此類問題時,C++執行時庫通常會終止程式的執行。

作業系統層級的保護[編輯]

目前OpenBSDLinuxWindowsMac OS等作業系統都具有buffer overflow protection(緩衝區溢位保護/記憶體位置重新定向)功能[來源請求],在某種程度上可以保護作業系統,但仍還是有辦法讓溢位的代碼到正確的位置上。其作用原理是:記憶體跟處理程式在memory中受到保護。內對外的access memory對象位置會被核心(排程器)隨機定向,使其無法正確溢位。

參見[編輯]

外部連結[編輯]