資料介紹
對于為何要保護(hù)堆棧,請以“緩沖區(qū)溢出”,“堆?!睘殛P(guān)鍵詞google一下,本文不再贅述。只要你的程序要調(diào)用函數(shù),那么就要使用堆棧,不進(jìn)行函數(shù)調(diào)用的程序已經(jīng)很少了吧,難道你能忍受通篇的jmp,jne.。。等等手工作坊的方法嗎?在linux和windows 上,保護(hù)棧的方式最重要的莫過于兩種, 一個是使用堆棧安全cookie;另一個是使棧不可執(zhí)行。
上面提到的兩種方式中,安全cookie提供了更大的保護(hù),而不可執(zhí)行棧在遇到溢出代碼放到堆的時候就很難奏效了,先看看安全cookie是怎么一回事。 在傳統(tǒng)的函數(shù)調(diào)用時,棧自下而上是:參數(shù)--》返回地址--》老的棧底指針--》局部變量--》。。.如果局部變量發(fā)生向下溢 出,覆蓋了函數(shù)的返回地址,那么程序一點脾氣也沒有,乖乖聽任你的擺布,但是這種錯誤的行為是在被調(diào)函數(shù)返回的時候發(fā)生的,如果被調(diào)函數(shù)有漏洞,那么我們希望的是在它返回的時候,也就是出了它的控制范圍的時候主動地報出錯誤,而不是將錯就錯,那么就需要一種有效的方式來檢測到錯誤的發(fā)生,于是安全 cookie就臨危受命了,它實際上就是在參數(shù)--》返回地址--》老的棧底指針--》局部變量--》。。.中間插入了一個 cookie,使得這個結(jié)構(gòu)變?yōu)榱藚?shù)--》返回地址--》老的棧底指針--》cookie--》局部變量--》。。.這 個cookie是每個程序映像都有的一個數(shù)值,最好就是一個隨機(jī)值,當(dāng)函數(shù)調(diào)用的時候,編譯器自動插入(編譯的時候編譯器知道何時進(jìn)行函數(shù)調(diào)用,比如 call)一個cookie,這個cookie在程序啟動的時候被初始化為隨機(jī)值(如果不是隨機(jī)值,我們考慮最極端的情況,比如就是1,那么攻擊者就知道 把kookie的位置覆蓋為1就不會導(dǎo)致cookie 檢查失敗了),當(dāng)程序返回的時候系統(tǒng)會檢查堆棧的cookie和程序的cookie是否一致,如果不 一致,那么就報錯。
以上的方式很不錯嗎?考慮一下以下的問題:如果攻擊者知道程序的cookie所存放的位置,那么他就會知道cookie的值,于是他就知道應(yīng)該將堆棧中 cookie位置的值覆蓋成什么,即使你將cookie的存放位置設(shè)為不可讀也不好,因為攻擊者總能通過各種淫亂的手段達(dá)到目的,試問你是保護(hù) cookie函數(shù)保護(hù)函數(shù)返回值?另外一個問題:當(dāng)cookie檢查失敗,該怎么辦?就算 cookie檢查失敗,緩沖區(qū)確實溢出,但是此時操作系統(tǒng)內(nèi)核并 不知道發(fā)生的一切(前提是只要別溢出到內(nèi)核空間),于是想讓系統(tǒng)在檢查失敗時就自動陷入內(nèi)核是不可能的,一切必須手動進(jìn)行,在用戶空間進(jìn)行,如果想讓內(nèi)核幫忙處理,就要手動進(jìn)行陷入(x86種int指令),如果不需要內(nèi)核處理就在用戶空間了斷,不管哪種方式,都要在檢查失敗后跳到一段代碼,我們姑且把它叫做異常處理代碼,那么問題來了,如果攻擊者將這段異常處理代碼攻擊了怎么辦,這不成了個怪圈了嗎?是的,這是個怪圈,緩沖區(qū)溢出錯誤既然發(fā)生,你就誰也別 怪,錯就錯在你的代碼寫的不嚴(yán)密有漏洞,指望緩沖區(qū)溢出檢查機(jī)制無論怎樣結(jié)果都是不可信的,記住,計算機(jī)系統(tǒng)中只有一種可信的軟件,就是操作系統(tǒng)內(nèi)核(存在內(nèi)核的前提下,當(dāng)然不包括裸奔的單片機(jī)),而用戶空間的緩沖區(qū)溢出又沒有嚴(yán)重到內(nèi)核必須接管的地步(它可沒有缺頁異常嚴(yán)重),既然用戶空間的任何機(jī)制都 不可信,那么你還指望所謂嚴(yán)密的緩沖區(qū)溢出檢查機(jī)制嗎?
- MOS管的電路符號詳細(xì)資料講解 49次下載
- 無人機(jī)的飛控系統(tǒng)詳細(xì)資料講解 76次下載
- 標(biāo)準(zhǔn)CANBUS協(xié)議鏈路的詳細(xì)資料講解 2次下載
- Arduino的語法詳細(xì)資料講解 4次下載
- Rockchip Linux SDK的開發(fā)指南的詳細(xì)資料說明 74次下載
- Linux的使用基礎(chǔ)詳細(xì)資料說明 15次下載
- 51單片機(jī)的int相關(guān)數(shù)據(jù)類型問題的詳細(xì)資料講解
- Proteus元器件封裝的詳細(xì)資料講解 0次下載
- STM8 GPIO入門的詳細(xì)資料講解筆記免費(fèi)下載 24次下載
- Linux的封裝庫文件詳細(xì)資料合集免費(fèi)下載 9次下載
- 使用Linux進(jìn)行GPS的衛(wèi)星信號欺騙源碼詳細(xì)資料免費(fèi)下載 8次下載
- Linux入門教程之Linux的基本操作詳細(xì)資料說明 14次下載
- 如何在Linux下如何刪除大量文件的詳細(xì)資料概述 7次下載
- linux教程之Linux系統(tǒng)的安裝與啟動詳細(xì)資料 7次下載
- 嵌入式linux開發(fā)詳細(xì)資料 3次下載
- linux和windows的區(qū)別 linux系統(tǒng)一般用來干嘛 1029次閱讀
- Windows與Linux之間相互傳輸文件的方法 4980次閱讀
- RS232接口串口取電電路的詳細(xì)資料介紹 9048次閱讀
- Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存分配算法 5483次閱讀
- Linux操作系統(tǒng)知識講解:走進(jìn)linux 內(nèi)存地址空間 5079次閱讀
- Linux桌面虛擬化技術(shù)KVM的詳細(xì)資料說明 4473次閱讀
- 如何新建一個軟件工程詳細(xì)資料講解 3172次閱讀
- 如何進(jìn)行PLC控制程序的設(shè)計詳細(xì)資料PPT說明 6010次閱讀
- 庫卡機(jī)器人模擬量輸入輸出編程的詳細(xì)資料概述 7037次閱讀
- PPT教程之伺服電機(jī)及其驅(qū)動技術(shù)的詳細(xì)資料講解 8034次閱讀
- 詳細(xì)的繼電保護(hù)基礎(chǔ)知識講解 1.3w次閱讀
- PLC常用基本環(huán)節(jié)梯形圖和詳細(xì)文字說明詳細(xì)資料概述 1w次閱讀
- 變壓器保護(hù)的基本要求,保護(hù)配置和運(yùn)行規(guī)定的詳細(xì)資料概述 9679次閱讀
- Windows和Linux的區(qū)別以及Linux系統(tǒng)的目錄結(jié)構(gòu) 8806次閱讀
- Linux系統(tǒng)軟件加殼保護(hù)技術(shù)的改進(jìn)設(shè)計 1419次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 651單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)大棚環(huán)境控制器仿真程序
- 1.10 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多