硬體反病毒是如何實現的?

在英特爾的部分型號的CPU上發現了這個功能,現在很好奇是怎麼實現的owo


EDB全稱Execute Disable Bit,即防病毒技術。CPU內嵌的防病毒技術是一種硬體防病毒技術,與操作系統相配合,可以防範大部分針對緩衝區溢出(buffer overrun)漏洞的攻擊(大部分是病毒)。Intel的防病毒技術是EDB(Excute Disable Bit),AMD的防病毒技術是EVP(Ehanced Virus Protection),但不管叫什麼,它們的原理都是大同小異的。

嚴格來說,各個CPU廠商在CPU內部集成的防病毒技術不能稱之為「硬體防毒」。首先,無論是Intel的EDB還是AMD的EVP,它們都是採用硬軟結合的方式工作的,都必須搭配相關的操作系統和軟體才能實現;其次,EDB和EVP都是為了防止因為內存緩衝區溢出而導致系統或應用軟體崩潰的,而這內存緩衝區溢出有可能是惡意代碼(病毒)所為,也有可能是應用程序設計的缺陷所致(無意識的),因此我們將其稱之為「防緩衝區溢出攻擊」更為恰當些。

在計算機內部,等待處理的數據一般都被放在內存的某個臨時空間里,這個臨時存放空間被稱為緩衝區(Buffer),緩衝區的長度事先已經被程序或者操作系統定義好了。緩衝區溢出(buffer

overrun)是指當計算機程序向緩衝區內填充的數據位數超過了緩衝區本身的容量。溢出的數據覆蓋在合法數據上。理想情況是,程序檢查數據長度並且不允
許輸入超過緩衝區長度的字元串。但是絕大多數程序都會假設數據長度總是與所分配的存儲空間相匹配,這就為緩衝區溢出埋下隱患。操作系統所使用的緩衝區又被
稱為堆棧,
在各個操作進程之間,指令被臨時存儲在堆棧當中,堆棧也會出現緩衝區溢出。當一個超長的數據進入到緩衝區時,超出部分就會被寫入其他緩衝區,其他緩衝區存
放的可能是數據、下一條指令的指針,或者是其他程序的輸出內容,這些內容都被覆蓋或者破壞掉。可見一小部分數據或者一套指令的溢出就可能導致一個程序或者
操作系統崩潰。而更壞的結果是,如果相關數據里包含了惡意代碼,那麼溢出的惡意代碼就會改寫應用程序返回的指令,使其指向包含惡意代碼的地址,使其被
CPU編譯而執行,而這可能發生「內存緩衝區溢出攻擊」,名噪一時的「衝擊波」、「震蕩波」等蠕蟲病毒就是採用這種手段來攻擊電腦的。

緩衝區溢出是由編程錯誤引起的。如果緩衝區被寫滿,而程序沒有去檢查緩衝區邊界,也沒有停止接收數據,這時緩衝區溢出就會發生。緩衝區邊界檢查被認為是不會有收益的管理支出,計算機資源不夠或者內存不足是編程者不編寫緩衝區邊界檢查語句的理由,然而技術的飛速發展已經使這一理由失去了存在的基礎,但是多數用戶日常主要應用的程序中大多數其實仍然是十年甚至二十年前的程序代碼,並沒有檢查緩衝區邊界的功能。

緩衝區溢出是病毒編寫者和特洛伊木馬編寫者偏愛使用的一種攻擊方法。攻擊者或者病毒善於在系統當中發現容易產生緩衝區溢出之處,運行特別程序,獲得優先順序,指示計算機破壞文件,改變數據,泄露敏感信息,產生後門訪問點,感染或者攻擊其他計算機。

對於緩衝區溢出攻擊,防毒殺毒軟體雖然也可以處理,但也只能是亡羊補牢,而操作系統和應用軟體的漏洞又是難以預測的,隨時可能被利用,引來緩衝區溢出攻擊。在這種情況下,預防緩衝區溢出攻擊應該從硬體層次著手,開始成為許多IT廠商的共識,於是大家俗稱的CPU硬體防病毒功能應運而生了。

緩衝區溢出攻擊最基本的實現途徑是向正常情況下不包含可執行代碼的內存區域插入可執行的代碼,並欺騙CPU執行這些代碼。而如果我們在這些內存頁面的數據區域設置某些標誌(No eXecute或eXcute Disable),當CPU讀取數據時檢測到該內存頁面有這些標誌時就拒絕執行該區域的可執行指令,從而可防止惡意代碼被執行,這就是CPU的防緩衝區溢出攻擊實現的原理。

而對於開啟了EDB或EVP功能的計算機來說,一般也就可實現數據和代碼的分離,而在內存某個頁面將被設置為只做數
據頁,而任何企圖在其中執行代碼的行為都將被CPU所拒絕。當然,開啟EDB、EVP功能的CPU是無法獨立完成標註不可執行代碼內存頁面以及進行相關檢
測防治工作的,它還需要相關操作系統和應用程序的配合。

Windows XP SP2、Windows Server 2003 SP1及64bit的Windows操作系統都提供了對EDB、EVP技術的支持。如果你使用的操作系統是Windows XP SP2,那麼啟用其中的DEP(Data Execution Protection,數據執行保護)功能即可為你的電腦提供比較全面的防緩衝區溢出攻擊功
能。DEP是可以獨立運行的,並也可幫助防禦某些類型的惡意代碼攻擊,但要充分利用DEP可以提供的保護功能,就需要CPU的配合了。DEP可單獨或和兼
容的CPU一起將內存的某些頁面位置標註為不可執行,如果某個程序嘗試從被保護的位置運行代碼,將會被CPU拒絕同時DEP會關閉程序並通知用戶,從而在
一定程度上保障用戶電腦的安全。

CPU內嵌的防病毒技術以及操作系統的防病毒技術因此在目前來說可能還存在著一些兼容性的問題,例如因應用程序設計的缺陷或驅動程序而
導致的誤報(特別是一些比較老的驅動程序);另外,對於有些程序來說,是採用實時生成代碼方式來執行動態代碼的,而生成的代碼就有可能位於標記為不可執行
的內存區域,這就有可能導致DEP將其檢測為非法應用程序而將其關閉。而這些都還有賴於硬體和軟體廠商的相互配合解決,當然,這些都是需要的時間。因
此,DEP、EDB、EVP等技術都還在向前發展。

摘自百度百科:http://baike.baidu.com/view/1807307.htm

其實算不上是防病毒……


推薦閱讀:

低功耗CPU是怎麼做到的?
為什麼gpu沒有像cpu那樣的二級緩存?
CPU和GPU的計算速度是如何計算的,一般軟體又如何佔用這些計算空間,1GHz是什麼概念?
智能手機的cpu性能 = 核心數 * 單核頻率?
會有i5 8400桌面U的藍天(神舟K680E)筆記本嗎?

TAG:英特爾Intel | 中央處理器CPU | 硬體 | 反病毒軟體 | 電子技術 |