除超頻還能玩啥?全面解讀CPU附加技術(shù)
二、CPU防病毒技術(shù)
提到防病毒問題,我們首先聯(lián)想到的是一系列的殺毒軟件,但是相信有不少人并不知道,其實CPU硬件本身也有防病毒技術(shù)。
曾幾何時,AMD和Intel都在為各自的CPU推廣一個概念:硬件防毒。在AMD和Intel的64bit處理器中,所謂的硬件防毒也成了了標(biāo)準(zhǔn)配置,CPU的硬件防毒功能是如何實現(xiàn)的呢?它真的有用么?是不是買了具有硬件防毒功能的CPU,就不需要防毒軟件了?因為經(jīng)常有朋友這么詢問,所以在CPU技術(shù)應(yīng)用方面文章也加入了這一項目。
CPU防毒須知:什么是緩沖區(qū)溢出
要明白CPU硬件防毒的功能,首先我們必須對緩沖區(qū)溢出做個了解。對于電腦用戶來說,“緩沖區(qū)溢出”一定都不會太陌生。在使用電腦過程中相信大家都遇到過“0x00xxxxxx指令引用的0x00000000內(nèi)存。該內(nèi)存不能為read”錯誤,而這實際上就是最基本的緩沖區(qū)溢出報告。
系統(tǒng)中常見的緩沖區(qū)溢出問題
那為什么會出現(xiàn)這樣的錯誤呢?原來在計算機(jī)內(nèi)部,等待處理的數(shù)據(jù)一般都被放在內(nèi)存的某個臨時空間里(Buffer緩沖區(qū)),其大小一般是由操作系統(tǒng)或是程序的相關(guān)函數(shù)來定義的。如果應(yīng)用程序向緩沖區(qū)輸入的數(shù)據(jù)超出了緩沖區(qū)本身的容量,而程序又沒有檢查緩沖區(qū)邊界的功能,那么就會發(fā)生緩沖區(qū)溢出。如果溢出部分被寫入了其他緩沖區(qū),將其他內(nèi)存區(qū)域的數(shù)據(jù)等給覆蓋,那么這就有可能導(dǎo)致某個應(yīng)用程序乃至操作系統(tǒng)崩潰。而更壞的結(jié)果是,如果相關(guān)數(shù)據(jù)里包含了惡意代碼,那么溢出的惡意代碼就會改寫應(yīng)用程序返回的指令,使其指向包含惡意代碼的地址,使其被CPU編譯而執(zhí)行,而這可能發(fā)生“內(nèi)存緩沖區(qū)溢出攻擊”,名噪一時的“沖擊波”、“震蕩波”等蠕蟲病毒就是采用這種手段來攻擊電腦的。
對于緩沖區(qū)溢出攻擊,防毒殺毒軟件雖然也可以處理,但也只能是“亡羊補(bǔ)牢”,而操作系統(tǒng)和應(yīng)用軟件的漏洞又是難以預(yù)測的,隨時可能被利用,引來緩沖區(qū)溢出攻擊。在這種情況下,預(yù)防緩沖區(qū)溢出攻擊應(yīng)該從硬件層次著手,開始成立許多IT廠商的共識,于是大家俗稱的CPU硬件防毒功能應(yīng)運(yùn)而生了。
將CPU硬件防毒稱之為“防緩沖區(qū)溢出攻擊”更為恰當(dāng)
對于各自的“硬件防毒”技術(shù),AMD將其稱之為Ehanced Virus Protection(EVP),而Intel則命名為Excute Disable Bit(EDB)。但不管叫什么,它們的原理都是大同小異,而嚴(yán)格來說,目前各個CPU廠商在CPU內(nèi)部集成的防毒技術(shù)不能稱之為“硬件防毒”。首先,無論是Intel的EDB還是AMD的EVP,它們都是采用硬軟結(jié)合的方式工作的,都必須搭配相關(guān)的操作系統(tǒng)和軟件才能實現(xiàn);其次,EDB和EVP它們都是為了防止因為內(nèi)存緩沖區(qū)溢出而導(dǎo)致系統(tǒng)或應(yīng)用軟件崩潰的,而這內(nèi)存緩沖區(qū)溢出有可能是惡意代碼(病毒)所為,也有可能是應(yīng)用程序設(shè)計的缺陷所致(無意識的),因此我們將其稱之為“防緩沖區(qū)溢出攻擊”更為恰當(dāng)些。
CPU的防緩沖區(qū)溢出攻擊實現(xiàn)的原理
我們知道,緩沖區(qū)溢出攻擊最基本的實現(xiàn)途徑是向正常情況下不包含可執(zhí)行代碼的內(nèi)存區(qū)域插入可執(zhí)行的代碼,并欺騙CPU執(zhí)行這些代碼。而如果我們在這些內(nèi)存頁面的數(shù)據(jù)區(qū)域設(shè)置某些標(biāo)志(No eXecute或eXcute Disable),當(dāng)CPU讀取數(shù)據(jù)時檢測到該內(nèi)存頁面有這些標(biāo)志時就拒絕執(zhí)行該區(qū)域的可執(zhí)行指令,從而可防止惡意代碼被執(zhí)行,這就是CPU的防緩沖區(qū)溢出攻擊實現(xiàn)的原理.
而對于開啟了EDB或EVP功能的計算機(jī)來說,一般也就可實現(xiàn)數(shù)據(jù)和代碼的分離,而在內(nèi)存某個頁面將被設(shè)置為只做數(shù)據(jù)頁,而任何企圖在其中執(zhí)行代碼的行為都將被CPU所拒絕。當(dāng)然,開啟EDB、EVP功能的CPU時無法獨立完成標(biāo)注不可執(zhí)行代碼內(nèi)存頁面以及進(jìn)行相關(guān)檢測防治工作的,它還需要相關(guān)操作系統(tǒng)和應(yīng)用程序的配合。
操作系統(tǒng)的支持必不可少
目前,我們常用的操作系統(tǒng)都提供了對EDB、EVP技術(shù)的支持。那么只要你啟用操作系統(tǒng)中的DEP(Data Execution Protection數(shù)據(jù)執(zhí)行保護(hù))功能即可為你的電腦提供比較全面的防緩沖區(qū)溢出攻擊功能(DEP是可以獨立運(yùn)行的,并也可幫助防御某些類型的惡意代碼攻擊,但要充分利用DEP可以提供的保護(hù)功能,就需要CPU的配合了)。設(shè)置方法是依次打開“控制面板”“系統(tǒng)”“高級”“性能設(shè)置”我們就可以打開“數(shù)據(jù)執(zhí)行保護(hù)”選項,同時也可以看到你的CPU支不支持硬件DEP。
VISTA系統(tǒng)的DEP設(shè)置選項
DEP可單獨或和兼容的CPU一起將內(nèi)存的某些頁面位置標(biāo)注為不可執(zhí)行,如果某個程序嘗試從被保護(hù)的位置運(yùn)行代碼,將會被CPU拒絕同時DEP會關(guān)閉程序并通知用戶,從而在一定程度上保障用戶電腦的安全。
DEP技術(shù)還在向前發(fā)展
因為DEP還是一項發(fā)展較晚的項目,并且應(yīng)用時間不長,因此在目前來說可能還存在著一些兼容性的問題。我們知道,在32bit操作系統(tǒng)下,需要CPU打開PAE(Physical Address Extensions物理地址擴(kuò)展)才能實現(xiàn)對DEP功能的硬件支持。PAE雖然使尋址空間擴(kuò)展到了64bit,不過支持的物理內(nèi)存大小依然在4 GB以內(nèi)。如果硬件設(shè)備并不支持64bit尋址能力或者驅(qū)動程序認(rèn)為在PAE開啟的模式下需要超過4GB的物理內(nèi)存,就有可能導(dǎo)致驅(qū)動錯誤;而對于有些程序來說,是采用實時生成代碼方式來執(zhí)行動態(tài)代碼的,而生成的代碼就有可能位于標(biāo)記為不可執(zhí)行的內(nèi)存區(qū)域,這就有可能導(dǎo)致DEP將其檢測為非法應(yīng)用程序而將其關(guān)閉。而這些都還有賴于硬件和軟件廠商的相互配合解決,當(dāng)然,這些都是需要的時間。因此,DEP、EDB、EVP等技術(shù)都還在向前發(fā)展。
建議:首先CPU防毒并不等同于殺毒軟件的功效,因為它是為了防止因為內(nèi)存緩沖區(qū)溢出而導(dǎo)致系統(tǒng)或應(yīng)用軟件崩潰的,而這內(nèi)存緩沖區(qū)溢出有可能是惡意代碼(病毒)所為,并不擁有類似防止木馬或是其他類型病毒的功能,所以我們開啟CPU防毒功能之外,還要安裝最新的殺毒軟件,這才是雙保險,目前可以開啟CPU防毒我們常用的系統(tǒng)是XP SP2/VISTA。
關(guān)注我們
