GPU恐成未來(lái)病毒的最大幫兇
GPU恐成未來(lái)病毒的最大幫兇
惡意軟件的編寫者們不斷地在尋找新的方法來(lái)偽裝他們的代碼,以求逃過(guò)殺毒軟件的檢測(cè)。目前有兩種新的代碼偽裝技術(shù)對(duì)現(xiàn)有的惡意代碼檢測(cè)分析系統(tǒng)形成了挑戰(zhàn),這就是脫殼(unpacking)和運(yùn)行時(shí)多態(tài)(run—timep01yITlorphism)。更為危險(xiǎn)的是,脫殼和運(yùn)行時(shí)多態(tài)都可以利用GPu進(jìn)行加速。這樣一來(lái),之前困擾惡意軟件編寫者的那些高負(fù)荷計(jì)算運(yùn)行方法,都可以利用GPU強(qiáng)大的并行計(jì)算能力進(jìn)行處理。這將導(dǎo)致我們?cè)谖磥?lái)而臨破壞力更為強(qiáng)大、狡猾而令人防不勝防的惡意軟件。
1.機(jī)會(huì)還是威脅GPU通用計(jì)算的發(fā)展
接下來(lái),讓我們先暫停一下對(duì)惡意軟件的恐懼,進(jìn)入GPU的世界。GPU通用計(jì)算最近幾年來(lái)飛速發(fā)展,當(dāng)GPU本身可編程性和靈活性大大提高后,很多人開(kāi)始著手探索如何利用GPU架構(gòu)進(jìn)行大規(guī)模的并行計(jì)算,畢竟GPU擁有系統(tǒng)中最為強(qiáng)勁的浮點(diǎn)計(jì)算能力,僅僅作為3D計(jì)算顯然相當(dāng)可惜。但GPU通用計(jì)算需要專用API才能在GPU上完美運(yùn)行。一般的圖形APIMDlrectX和OpenGL等,都不能很好地進(jìn)行通用計(jì)算。
對(duì)傳統(tǒng)GPU來(lái)說(shuō),無(wú)論是GPU本身設(shè)計(jì)還是調(diào)用方式都盡可能為GPU需要執(zhí)行的圖形計(jì)算優(yōu)化。因此你如果想利用GPU龐大的計(jì)算資源,那些需要計(jì)算的數(shù)據(jù)和變量,必須映射為圖形學(xué)對(duì)象,算法處理必須被表述為像素和頂點(diǎn)處理的形式,假裝是在進(jìn)行圖形計(jì)算一樣。這種“假裝”的形式讓程序員感到很束縛。因?yàn)閭鹘y(tǒng)GPU缺乏方便的數(shù)據(jù)類型,基本的計(jì)算函數(shù),以及一個(gè)一般化的內(nèi)存訪問(wèn)模型,使得它對(duì)于習(xí)慣于工作在傳統(tǒng)編程環(huán)境下的程序員們來(lái)說(shuō)沒(méi)有多少吸引力。
進(jìn)入DirectX 10時(shí)代后,NVIDIA提出了CUDAfCompute UnifiedDevice Architecture)這樣一個(gè)相當(dāng)富有創(chuàng)造力的通用運(yùn)算API架構(gòu)。有了這個(gè)API之后,程序員就不需要在自己的大腦中“映射”各種數(shù)據(jù),APl作為溝通橋粱已經(jīng)承擔(dān)了數(shù)據(jù)轉(zhuǎn)換、程序編譯等任務(wù)。這樣一來(lái),GPU就能很好地發(fā)揮計(jì)算效能。與此同時(shí),AMD也提供了對(duì)應(yīng)自家GPU產(chǎn)品的通用計(jì)算方法,被稱為Stream。
CUDA由一個(gè)C語(yǔ)言的極小擴(kuò)展集和一個(gè)運(yùn)行庫(kù)組成,這個(gè)運(yùn)行庫(kù)提供的函數(shù)能夠控制GPU,以及設(shè)備專有函數(shù)和相應(yīng)的數(shù)據(jù)。從相對(duì)宏觀的角度看,一個(gè)CUDA程序由兩部分組成,一個(gè)運(yùn)行在CPU上,另一個(gè)稱之為“kernel”,是運(yùn)行于GPU上的并行化部分。不過(guò)GPU上的kernel是不能獨(dú)立運(yùn)行的,它只能依賴于CPU上的父進(jìn)程調(diào)用,因此,它不能被作為一個(gè)獨(dú)立的程序直接初始化。
CUDA中的kernel在運(yùn)行時(shí)被劃分為多個(gè)線程來(lái)執(zhí)行,這些線程被組織成多個(gè)線程塊,然后交由GPU的CUDA Core--也就是常說(shuō)的流處理器來(lái)執(zhí)行。在GeForceGPU中,每個(gè)處理單元會(huì)包含8個(gè)SIMD流處理器組。這8個(gè)SIMD流處理器組會(huì)根據(jù)一個(gè)線程調(diào)度器的調(diào)配,令多個(gè)線程塊盡可能高效率、最大化地運(yùn)作,保障整個(gè)GPU的運(yùn)行效率。
除了編程執(zhí)行外,CUDA還提供了用于在主機(jī)和GPU問(wèn)進(jìn)行數(shù)據(jù)交換的函數(shù),所有的I/O動(dòng)作都通過(guò)PCI-E總線進(jìn)行。不僅如此,存儲(chǔ)器操作還可以通過(guò)DMA進(jìn)行,這樣就可以大幅度提高CPU和GPU工作的并行程度。在內(nèi)存一致性方面,主機(jī)的分頁(yè)鎖定內(nèi)存中的一個(gè)塊可以被映射到GPU的地址空間里,使得在CPU上運(yùn)行的普通程序和GPU上運(yùn)行的kernel能夠直接訪問(wèn)相同的數(shù)據(jù)。
總的來(lái)說(shuō),無(wú)論是CUDA還是Stream,都是盡可能利用GPU'性能的API。惡意軟件要運(yùn)行得有效率,就繞不開(kāi)這兩個(gè)API。下面就讓我們來(lái)看看惡意軟件是如何在GPU上搗鬼的。
上文說(shuō)過(guò),運(yùn)行于GPU上的kernel必須依賴CPU上的父進(jìn)程。惡意軟件也是如此,那些能利用GPU超強(qiáng)性能的惡意軟件往往包含兩個(gè)部分--GPU部分和CPU部分。說(shuō)得更細(xì)致一些,那就是惡意軟件在執(zhí)行時(shí),會(huì)裁入GPU端的設(shè)備代碼,分配CPU和GPU都可以訪問(wèn)到的一塊內(nèi)存區(qū)域,先初始化數(shù)據(jù),然后調(diào)度GPU代碼開(kāi)始執(zhí)行。當(dāng)然,和所有利用GPU的程序一樣,惡意軟件可以在GPU和CPU之前來(lái)回轉(zhuǎn)換,或者單獨(dú)讓GPU運(yùn)行或者只讓CPU運(yùn)行,也可以同時(shí)在GPU和GPU并行執(zhí)行。
當(dāng)然,惡意軟件編寫者不僅僅看中了GPU的計(jì)算能力,他們還需要更自由、不被監(jiān)視的執(zhí)行空間。恰好,在GPU這里,惡意軟件可以與CUDA庫(kù)靜態(tài)鏈接,成為一個(gè)獨(dú)立的可執(zhí)行程序,這樣一來(lái),惡意軟件就不需要在被感染的系統(tǒng)中安裝額外軟件。更令人難以接受的是,目前GPU端的代碼執(zhí)行,以及CPU和GPU之間的通訊,都不需要管理員特權(quán)。這意味著,惡意軟件可以在任何用戶權(quán)限下成功運(yùn)行——它不需要任何權(quán)限,也沒(méi)人監(jiān)控它。這就令惡意軟件隱蔽性更高、更容易被運(yùn)行起來(lái)。
2.加殼和變身惡意軟件感染計(jì)算機(jī)的方法
本文中將提到多次有關(guān)汁算機(jī)病毒、僵尸客戶端、木馬程序、后門程序以及惡意軟件等諸多對(duì)電腦經(jīng)常程序運(yùn)行產(chǎn)生危害的非法軟件。為了方便起見(jiàn),本文全部將其稱呼為“懷有惡意性質(zhì)的軟件”或“惡意軟件”。
在正常情況下,這些懷有惡意性質(zhì)的軟件,會(huì)悄悄地插入你的系統(tǒng)進(jìn)程中,并在后臺(tái)執(zhí)行一些不可告人的操作。從硬件角度來(lái)分析,傳統(tǒng)計(jì)算機(jī)系統(tǒng)中,只有CPU能完成這樣的任務(wù)。原因首先是CPU可以執(zhí)行任意類型的代碼,可編程性極強(qiáng);其次,CPU是系統(tǒng)的核心,擁有執(zhí)行任務(wù)相當(dāng)高的權(quán)限;其三,現(xiàn)代CPU性能都很不錯(cuò),多核心技術(shù)的普及讓這些懷疑惡意性質(zhì)的軟件即使運(yùn)行起來(lái),用戶也很難察覺(jué)——因?yàn)槟愕腃PU某些核心往往不會(huì)滿載,NVlDIA,已經(jīng)分別針對(duì)其GPU發(fā)布了相應(yīng)的SDK(software developmentkits,軟件開(kāi)發(fā)包),用于幫助程序員執(zhí)行可以在GPUJL運(yùn)行的通用代碼。這些代碼甚至可以使用傳統(tǒng)的C語(yǔ)言來(lái)編寫,比較常見(jiàn)的有NVIDIA和CUDA或者AMD的Stream。
目前,最新一代的GPU(比如支持DirectX 11的NVIDIA GeForce GTX500系列),已經(jīng)允許CPU和GPU上運(yùn)行的代碼完全相同(如NVIDIA所推出的CUDA-X86計(jì)劃)。在這種情況下,GPU通用計(jì)算被廣泛應(yīng)用于各類計(jì)算任務(wù)中。當(dāng)然,這部分計(jì)算任務(wù)還包括那些“雄心勃勃”的惡意軟件代碼編寫者??紤]到通用計(jì)算的巨大潛力,做出“惡意軟件編寫者們將利用現(xiàn)代GPU的強(qiáng)大性能,來(lái)為自己牟利”的預(yù)測(cè)就是很自然的事情了。
當(dāng)然,如果惡意軟件需要正常的運(yùn)行,必須有兩個(gè)先決條件:1.躲避現(xiàn)有反惡意軟件的防御能力;2.超越分析人員人工解析的能力。很多情況下,對(duì)惡意軟件的人工解析是確定、部署相應(yīng)的檢測(cè)并開(kāi)發(fā)反制軟件的先決條件。為了達(dá)到這個(gè)目的,惡意軟件往往使用兩種手段來(lái)阻止各種反惡意軟件發(fā)現(xiàn),并防御自己的運(yùn)行——這就是加殼和多態(tài)性,這是使用最為廣泛的、用于逃避反惡意軟件掃描和防御的技術(shù)。除此之外,在實(shí)際應(yīng)用中,代碼偽裝和反調(diào)試技巧常常被用于阻礙對(duì)惡意軟件代碼所實(shí)施的逆向分析工程。
所謂加殼,就是將自己真正需要運(yùn)行的內(nèi)容保護(hù)起來(lái)。打比方來(lái)說(shuō),炸彈外面包上鮮花,然后放在郵包里,郵包放在旅行箱里,旅行箱被放在運(yùn)輸飛機(jī)的某一處。在加了三層殼子后,炸彈看起來(lái)像個(gè)正常的旅行箱,但一旦飛機(jī)上天,爆炸后的后果就不堪設(shè)想。惡意軟件往往將自己偽裝成正常執(zhí)行的程序,騙取系統(tǒng)或者反病毒軟件,甚至是用戶本人的信任,最終實(shí)現(xiàn)其不可知的目的。
而多態(tài)性,是指惡意軟件在執(zhí)行時(shí),不將自己全部暴露在內(nèi)存中——如果全部暴露,就可能難以逃脫反惡意軟件的掃描。因此,惡意軟件將自己的一小部分暴露在內(nèi)存中,然后在需要的時(shí)候再暴露另一部分。簡(jiǎn)而言之就是“化整為零,按需調(diào)用”。這個(gè)看起來(lái)相當(dāng)“有效率”的方法,帶來(lái)了惡意軟件非常難以防御的特性。因?yàn)槌绦虿皇侨?,它們只能機(jī)械地執(zhí)行掃描和對(duì)比的任務(wù)。如果反病毒程序已經(jīng)確定了幾種惡意軟件“變身”的方法,那么只要惡意軟件下次改變一下暴露順序,或者掩蓋一下自己的執(zhí)行目標(biāo),反病毒軟件就可能無(wú)法偵測(cè)。
迄今為止,這些所有的惡意軟件都利用了目前程序執(zhí)行環(huán)境的復(fù)雜性,盡可能隱秘地逃脫反惡意軟件的偵測(cè)。更糟的是,大部分研究反惡意軟件的安全研究人員們只關(guān)注于IA-32架構(gòu),因?yàn)榻^大多數(shù)惡意軟件都運(yùn)行在X86系統(tǒng)上。但令人擔(dān)心的是,GPU通用計(jì)算的來(lái)臨,為惡意軟件的編寫者們帶來(lái)了一扇機(jī)會(huì)之窗,因?yàn)榇蠖鄶?shù)安全研究者對(duì)于GPU的執(zhí)行環(huán)境和指令集架構(gòu)并不熟悉。利用GPU通用計(jì)算,惡意軟件可能會(huì)有效對(duì)抗現(xiàn)有的防御手段。
3.束手無(wú)策?惡意軟件如何利用GPU資源
前文已經(jīng)描述了惡意軟件感染系統(tǒng)的方式,并且說(shuō)明了它利用GPU進(jìn)行并行加速的可能性。接下來(lái),研究人員將通過(guò)實(shí)例來(lái)模擬這個(gè)過(guò)程。在模擬中使用的原型代碼不僅僅證明了惡意軟件利用GPU的可行性,而且已經(jīng)確信對(duì)現(xiàn)有的分析檢測(cè)系統(tǒng)構(gòu)成了不容忽視的挑戰(zhàn)。
研究人員選擇使用NVIDIACUDA來(lái)部署源代碼,當(dāng)然攻擊者可以很容易地使用其他GPU代碼版本,甚至還能在不同GPU之間進(jìn)行轉(zhuǎn)換。目前攻擊者只要掌握了CUDA和Stream,就能基本上掌握100%的GPU惡意軟件攻擊范圍。還有更令人恐懼的——OpenCL是一個(gè)跨平臺(tái)的GPGPU框架,致力于提供統(tǒng)一的API,如果它得到廣泛引用,那么就連插入不同版本的代碼也完全沒(méi)有必要,只要平臺(tái)支持OpenCL,就可能被惡意軟件利用你電腦中的GPU加速運(yùn)行。
3.1.自脫殼GPU加速
前文已經(jīng)簡(jiǎn)單介紹了惡意軟件的加殼技術(shù)。當(dāng)然,飛機(jī)上放炸彈的例子只是用于破壞性的炸彈。在軟件這里,經(jīng)過(guò)多層加殼偽裝后的代碼,需要脫殼解秘,才能變成真正的惡意代碼危害系統(tǒng)。
一般情況下,惡意軟件設(shè)計(jì)有自脫殼程序,這個(gè)程序在運(yùn)行時(shí)會(huì)首先解包被隱藏的代碼,然后將控制權(quán)移交給已在主機(jī)內(nèi)存中變形為真實(shí)代碼的惡意軟件。當(dāng)然,一種惡意軟件可能不止使用一種加殼程序,使用不同的變換方法或者改變解包程序的代碼,攻擊者可以容易地制造同一個(gè)惡意軟件的全新變種,還能有效地躲避檢測(cè)程序。
目前傳統(tǒng)惡意軟件的自脫殼算法都不特別復(fù)雜,因?yàn)橐紤]到CPU的計(jì)算能力,一旦顯著拖累系統(tǒng),惡意軟件不但容易被察覺(jué),還給自己的運(yùn)行帶來(lái)了不利影響。但利用GPU強(qiáng)大的并行計(jì)算能力后,惡意軟件的作者能夠利用極其復(fù)雜的加密算法給惡意軟件加殼,這些復(fù)雜的加密算法最終將被GPU大規(guī)模并行架構(gòu)快速而有效地處理。
這種高強(qiáng)度的加殼、脫殼操作,為現(xiàn)有的惡意軟件分析檢測(cè)系統(tǒng)制造了不容忽視的障礙。許多反惡意軟件中用于檢測(cè)自動(dòng)脫殼的部分有先天缺陷,沒(méi)辦法應(yīng)對(duì)基于GPU的自解包惡意軟件。比如常用的PolyUnpack,在脫殼時(shí)依賴單步執(zhí)行和動(dòng)態(tài)反匯編,但這種技術(shù)在GPU上的動(dòng)態(tài)和靜態(tài)分析還很不成熟,當(dāng)然也沒(méi)有獲得惡意軟件分析系統(tǒng)的支持。另外一些反惡意軟件的脫殼系統(tǒng),比如Renovo,依賴于在虛擬機(jī)中監(jiān)控惡意軟件的執(zhí)行過(guò)程,但顯而易見(jiàn)的是,目前的虛擬機(jī)還僅僅只能做到虛擬圖形設(shè)備而已,只能執(zhí)行簡(jiǎn)單的3D計(jì)算,根本不能執(zhí)行GPU通用計(jì)算任務(wù),也沒(méi)有這方面的功能。這樣一來(lái),利用虛擬機(jī)監(jiān)控惡意軟件的脫殼也將成為泡影。
當(dāng)然,還有一些檢測(cè)軟件脫殼的技術(shù)比如omniUnDack,這種技術(shù)理論上可能會(huì)對(duì)惡意軟件在GPU中的操作起到一定的檢測(cè)作用,但實(shí)際上它在應(yīng)用中還是和虛擬機(jī)聯(lián)合部署的,也就是說(shuō),實(shí)際應(yīng)用中也不能檢測(cè)到GPU中的脫殼運(yùn)行情況。
3.2.運(yùn)行時(shí)多態(tài)技術(shù)
不過(guò),前一頁(yè)研究人員的演示可能并不能讓人信服,有人肯定會(huì)說(shuō),無(wú)論加殼脫殼的設(shè)備是CPU還是GPU、無(wú)論殼算法多么復(fù)雜,最終都將惡意代碼直接存放在主機(jī)內(nèi)存中。這樣一來(lái)只要反惡意軟件掃描系統(tǒng)內(nèi)容,就能很輕松地發(fā)現(xiàn)惡意軟件執(zhí)行意圖并給予相應(yīng)防御措施。
實(shí)際上這種情況只能代表部分惡意軟件的運(yùn)行方法。正像本文開(kāi)頭解釋“運(yùn)行時(shí)多態(tài)”技術(shù)時(shí)說(shuō)的那樣,惡意軟件在運(yùn)行時(shí),往往不會(huì)暴露自己的全部代碼,它可能重新加殼,或者只是按需分配、重復(fù)加殼脫殼那些當(dāng)前需要的代碼。不僅如此,惡意軟件開(kāi)發(fā)人員還會(huì)控制解碼部分的粒度,也就是每次解碼的數(shù)最,這個(gè)數(shù)量越小,在內(nèi)存中暴露真實(shí)代碼的區(qū)域就越小,被偵測(cè)的可能性也就越低,也越難以被發(fā)現(xiàn)和防御。這種代碼分割算法給反惡意軟件帶來(lái)了明顯的困擾。
在加入了GPU后,這些重復(fù)脫殼加殼的算法,都使用GPu執(zhí)行,并且整個(gè)需要脫殼和加殼的部分代碼也全部存在GPUAc。CPU的職責(zé)僅是在每個(gè)部分的代碼執(zhí)行前和執(zhí)行后,將控制權(quán)交還給GPu上的調(diào)度代碼,去做按需的解密變換和加密變換。也就是說(shuō),在執(zhí)行期間,控制權(quán)在CPU和GPU之間不斷地轉(zhuǎn)換。同樣,GPU和CPU也擁有一個(gè)可以同時(shí)訪問(wèn)的內(nèi)存區(qū)域用于保持?jǐn)?shù)據(jù)一致性和及時(shí)刷新。
不僅如此,在這種技術(shù)中,解密密匙被保存在較為保密的、無(wú)法從CPU端訪問(wèn)的CUDA設(shè)備存儲(chǔ)器當(dāng)中,更有甚者,在每個(gè)部分執(zhí)行后的重加密過(guò)程中,還可以使用隨機(jī)生成的不同密匙,這導(dǎo)致了惡意軟件能夠在存儲(chǔ)器中以不可預(yù)測(cè)的方式不斷地發(fā)生變異。而這些解密方法和變異都是不能被檢測(cè)或者預(yù)測(cè)到的,將直接導(dǎo)致目前依賴抽取密鑰和相應(yīng)加密解密區(qū)域等方法的反惡意軟件運(yùn)行失敗。當(dāng)然從理論上來(lái)說(shuō),雖然原始代碼的完整抽取仍然是可能被分析人員做到的,但是如果考慮現(xiàn)有的反調(diào)試技術(shù),這種有GPu從旁協(xié)助的運(yùn)行時(shí)多態(tài)會(huì)使得整個(gè)逆向工程分析過(guò)程變得異常地漫長(zhǎng)和艱難。
4.未來(lái)更危險(xiǎn)?GPU上惡意軟件的發(fā)展方向
在先前的章節(jié)中,研究人員為我們展示了惡意軟件將自己在CPU和GPU之間分離執(zhí)行的具體方式。雖然現(xiàn)代GPU的性能已經(jīng)足夠強(qiáng)大,但是目前的技術(shù)僅僅使用了其中的一小部分。未來(lái)惡意軟件作者可能會(huì)開(kāi)始廣泛利用GPU的圖形和通用計(jì)算能力。
GPU提供了,大規(guī)模并行處理的能力,可以被用來(lái)加速CPU負(fù)載較重的運(yùn)算。例如,一些惡意軟件開(kāi)發(fā)人員往往使用僵尸網(wǎng)絡(luò)進(jìn)行大規(guī)模的密碼暴力破解,而這正是GPU通用計(jì)算的專長(zhǎng)。通過(guò)對(duì)GPU通用計(jì)算的支持,僵尸電腦的能力可以很容易地獲得延伸,可以使用被感染主機(jī)的GPU來(lái)分?jǐn)偯艽a破解的負(fù)載。這不僅帶來(lái)了整體破解效率的顯著提升,而且還隱藏了正在進(jìn)行的惡意活動(dòng)——因?yàn)镚PU的工作無(wú)法被實(shí)時(shí)監(jiān)控,無(wú)法鑒別正在運(yùn)行的代碼,所以難以確認(rèn)GPU上是否有密碼破解程序的代碼出現(xiàn)。另外,由于GPU的加入,在這種計(jì)算任務(wù)中,CPU幾乎不會(huì)占用,所以CPU負(fù)載監(jiān)視程序?qū)τ跈z測(cè)惡意活動(dòng)也無(wú)能為力。
除了惡意軟件在GPU上的運(yùn)行外,還有其他的一些危險(xiǎn)也可能和GPU掛鉤。比如GPU的幀緩沖區(qū),屏幕上所顯示的內(nèi)容往往存放在幀緩沖區(qū)內(nèi)。不過(guò)目前系統(tǒng)對(duì)幀緩沖區(qū)的訪問(wèn)沒(méi)有施加限制,這可能會(huì)帶來(lái)一系列攻擊手段。比如,GPU上運(yùn)行的惡意代碼能夠周期性地訪問(wèn)這一緩沖區(qū),將用戶屏幕上出現(xiàn)的私人數(shù)據(jù)收入囊中,這個(gè)做法比現(xiàn)有的屏幕截圖的手段更加隱蔽。而更老練的惡意軟件甚至?xí)噲D在用戶訪問(wèn)虛假網(wǎng)站時(shí),在屏幕上顯示錯(cuò)誤的或者具有迷惑性的信息,例如偷偷將用戶瀏覽器地址欄中,那些可能會(huì)引起用戶懷疑的惡意地址,替換成看起來(lái)正常的地址。
不過(guò)有一個(gè)好消息是,目前幀緩沖區(qū)還存在讀寫保護(hù),因此一些對(duì)幀緩沖區(qū)的惡意行為很難輕易實(shí)施。但由于廠商們一直在嘗試提升GPU通用運(yùn)算SDK和圖形API(如OpenGL,DirectX)的互通性,所以未來(lái)有可能存在對(duì)屏幕幀緩沖區(qū)擁有完全訪問(wèn)權(quán)限的kernel。這種要求主要來(lái)自于那些需要直接訪問(wèn)屏幕像素的程序,例如3D變換,視頻編碼與解碼等。因?yàn)檫@樣一來(lái)就可以大大減少cPU和GPU間的數(shù)據(jù)交換。所以,將來(lái)發(fā)布的硬件會(huì)不可避免地具備這一特性。
更恐怖的是,未來(lái)的GPu通用架構(gòu)將使得部署基于GPU的惡意軟件成為可能,也就是說(shuō),惡意軟件將主要在GPU上運(yùn)行,與在CPU上運(yùn)行的程序沒(méi)有任何關(guān)聯(lián)。不過(guò)令人慶幸是,這種問(wèn)題可能在短期內(nèi)都不會(huì)出現(xiàn)。因?yàn)楝F(xiàn)有圖形硬件架構(gòu)很難支持獨(dú)立GPU程序的多任務(wù)運(yùn)行,任意時(shí)刻只支持一個(gè)任務(wù)占用GPU。這就意味著一旦有任何獨(dú)占GPU的運(yùn)算任務(wù)存在,那么負(fù)責(zé)屏幕內(nèi)容渲染的程序無(wú)法運(yùn)行,顯示器上顯示的內(nèi)容會(huì)被凍結(jié)。雖然這些在現(xiàn)在看來(lái)不太現(xiàn)實(shí),有很多技術(shù)障礙需要克服,但是在將來(lái),圖形硬件將具備下一代惡意軟件所需要的功能,這會(huì)徹底釋放GPU的能力。
當(dāng)然,我們現(xiàn)在也無(wú)需悲觀。畢竟當(dāng)前GPU還無(wú)法脫離CPU對(duì)系統(tǒng)進(jìn)行控制。我們現(xiàn)在還有充分的時(shí)間,對(duì)未來(lái)GPU可能進(jìn)行的破壞行為進(jìn)行研究,預(yù)防。同時(shí),也有不少殺毒軟件開(kāi)始采用能夠利用GPu運(yùn)算能力的殺毒引擎,顯然這也將大大提升電腦的反病毒能力。