- 相關(guān)推薦
CPU系列·什么是防病毒技術(shù)
CPU內(nèi)嵌的防病毒技術(shù)是一種硬件防病毒技術(shù),與操作系統(tǒng)相配合,可以防范大部分針對緩沖區(qū)溢出(buffer overrun)漏洞的攻擊(大部分是病毒)。Intel的防病毒技術(shù)是EDB(Excute Disable Bit),AMD的防病毒技術(shù)是EVP(Ehanced Virus Protection),但不管叫什么,它們的原理都是大同小異的。嚴(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)些。
在計算機內(nèi)部,等待處理的數(shù)據(jù)一般都被放在內(nèi)存的某個臨時空間里,這個臨時存放空間被稱為緩沖區(qū)(Buffer),緩沖區(qū)的長度事先已經(jīng)被程序或者操作系統(tǒng)定義好了。緩沖區(qū)溢出(buffer overrun)是指當(dāng)計算機程序向緩沖區(qū)內(nèi)填充的數(shù)據(jù)位數(shù)超過了緩沖區(qū)本身的容量。溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上。理想情況是,程序檢查數(shù)據(jù)長度并且不允許輸入超過緩沖區(qū)長度的字符串。但是絕大多數(shù)程序都會假設(shè)數(shù)據(jù)長度總是與所分配的存儲空間相匹配,這就為緩沖區(qū)溢出埋下隱患。操作系統(tǒng)所使用的緩沖區(qū)又被稱為堆棧,在各個操作進程之間,指令被臨時存儲在堆棧當(dāng)中,堆棧也會出現(xiàn)緩沖區(qū)溢出。當(dāng)一個超長的數(shù)據(jù)進入到緩沖區(qū)時,超出部分就會被寫入其他緩沖區(qū),其他緩沖區(qū)存放的可能是數(shù)據(jù)、下一條指令的指針,或者是其他程序的輸出內(nèi)容,這些內(nèi)容都被覆蓋或者破壞掉。可見一小部分?jǐn)?shù)據(jù)或者一套指令的溢出就可能導(dǎo)致一個程序或者操作系統(tǒng)崩潰。而更壞的結(jié)果是,如果相關(guān)數(shù)據(jù)里包含了惡意代碼,那么溢出的惡意代碼就會改寫應(yīng)用程序返回的指令,使其指向包含惡意代碼的地址,使其被CPU編譯而執(zhí)行,而這可能發(fā)生“內(nèi)存緩沖區(qū)溢出攻擊”,名噪一時的“沖擊波”、“震蕩波”等蠕蟲病毒就是采用這種手段來攻擊電腦的。
緩沖區(qū)溢出是由編程錯誤引起的。如果緩沖區(qū)被寫滿,而程序沒有去檢查緩沖區(qū)邊界,也沒有停止接收數(shù)據(jù),這時緩沖區(qū)溢出就會發(fā)生。緩沖區(qū)邊界檢查被認(rèn)為是不會有收益的管理支出,計算機資源不夠或者內(nèi)存不足是編程者不編寫緩沖區(qū)邊界檢查語句的理由,然而技術(shù)的飛速發(fā)展已經(jīng)使這一理由失去了存在的基礎(chǔ),但是多數(shù)用戶日常主要應(yīng)用的程序中大多數(shù)其實仍然是十年甚至二十年前的程序代碼,并沒有檢查緩沖區(qū)邊界的功能。
緩沖區(qū)溢出是病毒編寫者和特洛伊木馬編寫者偏愛使用的一種攻擊方法。攻擊者或者病毒善于在系統(tǒng)當(dāng)中發(fā)現(xiàn)容易產(chǎn)生緩沖區(qū)溢出之處,運行特別程序,獲得優(yōu)先級,指示計算機破壞文件,改變數(shù)據(jù),泄露敏感信息,產(chǎn)生后門訪問點,感染或者攻擊其他計算機。
對于緩沖區(qū)溢出攻擊,防毒殺毒軟件雖然也可以處理,但也只能是亡羊補牢,而操作系統(tǒng)和應(yīng)用軟件的漏洞又是難以預(yù)測的,隨時可能被利用,引來緩沖區(qū)溢出攻擊。在這種情況下,預(yù)防緩沖區(qū)溢出攻擊應(yīng)該從硬件層次著手,開始成為許多IT廠商的共識,于是大家俗稱的CPU硬件防病毒功能應(yīng)運而生了。
緩沖區(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功能的計算機來說,一般也就可實現(xiàn)數(shù)據(jù)和代碼的分離,而在內(nèi)存某個頁面將被設(shè)置為只做數(shù)據(jù)頁,而任何企圖在其中執(zhí)行代碼的行為都將被CPU所拒絕。當(dāng)然,開啟EDB、EVP功能的CPU是無法獨立完成標(biāo)注不可執(zhí)行代碼內(nèi)存頁面以及進行相關(guān)檢測防治工作的,它還需要相關(guān)操作系統(tǒng)和應(yīng)用程序的配合。
目前,Windows XP SP2、Windows Server 2003 SP1及64bit的Windows操作系統(tǒng)都提供了對EDB、EVP技術(shù)的支持。如果你使用的操作系統(tǒng)是Windows XP SP2,那么啟用其中的DEP(Data Execution Protection,數(shù)據(jù)執(zhí)行保護)功能即可為你的電腦提供比較全面的防緩沖區(qū)溢出攻擊功能。DEP是可以獨立運行的,并也可幫助防御某些類型的惡意代碼攻擊,但要充分利用DEP可以提供的保護功能,就需要CPU的配合了。DEP可單獨或和兼容的CPU一起將內(nèi)存的某些頁面位置標(biāo)注為不可執(zhí)行,如果某個程序嘗試從被保護的位置運行代碼,將會被CPU拒絕同時DEP會關(guān)閉程序并通知用戶,從而在一定程度上保障用戶電腦的安全。
CPU內(nèi)嵌的防病毒技術(shù)以及操作系統(tǒng)的防病毒技術(shù)因此在目前來說可能還存在著一些兼容性的問題,例如因應(yīng)用程序設(shè)計的缺陷或驅(qū)動程序而導(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系列·什么是防病毒技術(shù)】相關(guān)文章:
什么是“藍牙”技術(shù)? What is Bluetooth?05-04
2020防病毒肺炎簡單又漂亮手抄報11-01
解決CPU風(fēng)扇不轉(zhuǎn)的辦法12-20
計算機術(shù)語 CPU類05-04
技術(shù)總監(jiān)年度工作總結(jié)系列10-04
為何安裝防病毒軟件后還會被感染10-29
計算機英語高級詞匯·CPU05-04
怎么看電腦cpu使用率過高03-17