·反產(chǎn)品兼容沖突問題概述
反病毒產(chǎn)品從最開始的行命令掃描工具發(fā)展至今,已經(jīng)形成了帶有文件、注冊表、內(nèi)存等多種本地監(jiān)控機制;、郵件客戶端等多種保護(hù)環(huán)節(jié);以及整合了主機、檢測機制、主動防御機制的綜合型產(chǎn)品。而其核心價值早在上世紀(jì)末,就已經(jīng)從最開始的靜態(tài)的文件掃描檢測,變成實時化的主機防護(hù)。而實時化的防護(hù)推動了反病毒產(chǎn)品使用更多的服務(wù)、驅(qū)動等底層技術(shù),運行于更接近系統(tǒng)內(nèi)核的位置,這也為反病毒產(chǎn)品產(chǎn)生相互兼容性問題打下了伏筆。
隨著的復(fù)雜化,威脅的不斷離散化等影響,反病毒的監(jiān)控保護(hù)點也日趨復(fù)雜,又加之反病毒廠商數(shù)量也在增加,而操作系統(tǒng)廠商并沒提供比較標(biāo)準(zhǔn)的技術(shù)規(guī)范,因此反病毒產(chǎn)品因互不兼容,發(fā)生共存沖突等帶來的問題越來越多,并間接影響了用戶對反病毒產(chǎn)品的信任。
目前己經(jīng)發(fā)現(xiàn)并被報道過的兼容性問題包括:
造成系統(tǒng)崩潰和其他嚴(yán)重故障:從2000年以來,根據(jù)公開報道,已經(jīng)出現(xiàn)多起因反病毒產(chǎn)品之間相互沖突,而導(dǎo)致系統(tǒng)藍(lán)屏、死鎖等事件。
資源占用:反病毒掃描、監(jiān)控和其他防護(hù)機制,都會帶來系統(tǒng)資源的占用。如病毒庫的內(nèi)存展開對內(nèi)存的資源使用,文件監(jiān)控、定時掃描可能導(dǎo)致更多的I/O開銷、以及各種保護(hù)機制對CPU時間片的占用等等。這些對用戶操作有一定影響,如系統(tǒng)延遲、文件復(fù)制操作時間變長等等。而由于消息傳遞等機制,有可能在多種反病毒產(chǎn)品共存時,其對資源和時間的影響不是簡單的線性疊加,而是出現(xiàn)明顯的性能惡化。
失效:由于監(jiān)控機制之間的沖突,多種監(jiān)控機制共存時,有可能造成其中之一失效,或者部分機制雙雙失效的風(fēng)險。上述后果,可以在兼容性測試中被浮現(xiàn)。
相互誤報:由于廠商之間互信互通機制尚不夠通暢,以及少數(shù)惡意的“誤報構(gòu)造”攻擊的存在,廠商之間出現(xiàn)相互誤報的情況,也時常發(fā)現(xiàn)。由于被報警為病毒而嚴(yán)重地影響用戶對產(chǎn)品的信心,因此,各廠商對被誤報的問題也均比較敏感。
但需要指出的是,絕大多數(shù)情況下,反病毒產(chǎn)品之間的兼容性沖突問題,都是技術(shù)與協(xié)調(diào)的問題,有其工作機理上的必然性,并往往具有一定的不可避免性。相關(guān)問題多數(shù)并不是由商業(yè)競爭引發(fā)的,商業(yè)競爭也不是反病毒產(chǎn)品兼容沖突問題的本質(zhì)。本白皮書主要介紹當(dāng)前反病毒產(chǎn)品沖突的主因,以澄清公眾誤解。
下文中涉及到安天和廠商產(chǎn)品所使用的技術(shù)點,均用于說明反病毒產(chǎn)品之間兼容性沖突的必然性,不是對實現(xiàn)水平進(jìn)行評價。
·主要沖突點詳細(xì)解析
實時監(jiān)控、主動防御等技術(shù)的發(fā)展是一柄雙刃劍,一方面隨著監(jiān)控點的增加能應(yīng)對新的安全威脅,另一方面也使反病毒產(chǎn)品的穩(wěn)定性遇到挑戰(zhàn),測試難度普遍加大。反病毒產(chǎn)品自身的穩(wěn)定性壓力都在呈現(xiàn)幾何級數(shù)增長,相互之間的兼容則變得更加困難。以下從文件監(jiān)控、防火墻、瀏覽器防護(hù)、主動防御四個主要技術(shù)點,描述導(dǎo)致反病毒產(chǎn)品自身的穩(wěn)定性下降、與操作系統(tǒng)之間和相互之間出現(xiàn)嚴(yán)重沖突問題的成因。
·文件監(jiān)控的潛在兼容性問題
文件監(jiān)控是反病毒廠商普遍采用的技術(shù)手段,其主要機理是對文件的創(chuàng)建、讀取、關(guān)閉等行為進(jìn)行監(jiān)控觸發(fā)對文件病毒檢測,以阻斷病毒的執(zhí)行和部分相關(guān)行為。
文件監(jiān)控的實現(xiàn)方式主要有以下兩大類型:
1. API掛鉤。根據(jù)鉤掛API的層次不同我們又可以分為
a) Ring3文件監(jiān)控。多采用inline hook的方式修改文件操作相關(guān)函數(shù)的前幾個字節(jié),跳轉(zhuǎn)到自己的函數(shù),然后對將要操作的文件和緩沖區(qū)進(jìn)行檢測。
由于實現(xiàn)跳轉(zhuǎn)的方式有多種,所以不同軟件的實現(xiàn)策略有所不同,很難保證多個軟件共存時前一軟件修改后不影響到后一個軟件,而且很可能導(dǎo)致相關(guān)進(jìn)程崩潰。
由于此類技術(shù)也多被惡意軟件使用,一些安全軟件不會在執(zhí)行完自己的代碼后執(zhí)行修改前的自己,而是采用從原始文件中讀取、分析、執(zhí)行的方式,導(dǎo)致多個安全軟件同時監(jiān)控一個API時,只有一個生效。
出于性能考慮,不傳遞給原API處理而采用自己實現(xiàn)的代碼完成該API的相應(yīng)功能,那么也不會將相關(guān)信息傳遞給其他軟件。
部分軟件在執(zhí)行完自己的函數(shù)后會把修改后的字節(jié)還原,然后調(diào)用原系統(tǒng)API完成功能后再次修改、掛鉤。兩個使用此實現(xiàn)的軟件同時工作則可能造成互相調(diào)用導(dǎo)致死鎖,程序沒有響應(yīng)。
b) Ring0文件監(jiān)控。與ring3的情況類似,但是后果更加嚴(yán)重。
由于inline hook不同實現(xiàn)造成的不兼容性很可能導(dǎo)致系統(tǒng)API無法正常工作,導(dǎo)致系統(tǒng)藍(lán)屏。
例如:安天客戶端產(chǎn)品(Antiy Ghostbusters4.0)早期版本采用大量inline hook,后因與其他產(chǎn)品嚴(yán)重沖突放棄;360安全衛(wèi)士中inline hook有幾種不同實現(xiàn)方式共存的現(xiàn)象,并且與360安全瀏覽器有重合的監(jiān)控點。
掛鉤之間相互調(diào)用,會導(dǎo)致死鎖,系統(tǒng)死機。
采用替換SSDT的方式,則只有自己的掛鉤有效,其他軟件的掛鉤均無效。
例如:360安全衛(wèi)士等產(chǎn)品采用替換SSDT的方式,與其共存的安全軟件通過標(biāo)準(zhǔn)方法獲取的SSDT是無效的,導(dǎo)致其他安全軟件功能出現(xiàn)缺失。
Vista以后對內(nèi)核進(jìn)行保護(hù),部分對內(nèi)核函數(shù)的修改會導(dǎo)致系統(tǒng)藍(lán)屏。
例如:多個產(chǎn)品在內(nèi)測和對外版本都出現(xiàn)過對關(guān)鍵內(nèi)核函數(shù)進(jìn)行修改,但是并沒有仔細(xì)判斷版本,導(dǎo)致兼容性出現(xiàn)問題而使系統(tǒng)藍(lán)屏。
2. 文件過濾驅(qū)動
File System Filter Drivers
File System Minifilter Drivers
過濾驅(qū)動的本質(zhì)依然是掛鉤,但微軟為了方便廠商調(diào)用,對其進(jìn)行了,屬于官方的技術(shù)。此類技術(shù)本身已經(jīng)力求穩(wěn)定與兼容,多數(shù)都提供了一定的兼容性保障。微軟自己的安全產(chǎn)品在驅(qū)動層面也多使用類似的方式。
處置方式 交給后續(xù)過濾函數(shù)繼續(xù)過濾 直接交給下層函數(shù)處理 拒絕訪問
兼容問題現(xiàn)象 掃描次數(shù)多、系統(tǒng)變卡、變慢 后續(xù)過濾不生效,實際上只有一個安全軟件在保護(hù)主機。 后續(xù)過濾不生效,只有一個安全軟件報告病毒。
但是在安全產(chǎn)品的實際應(yīng)用中,多層監(jiān)控逐層傳遞會造成效率的降低,一些廠商在實現(xiàn)時會繞過后續(xù)的過濾驅(qū)動,直接將IRP請求發(fā)給下一層驅(qū)動完成相關(guān)的功能。
·防火墻的潛在兼容性問題
目前反病毒產(chǎn)品普遍使用單機防火墻技術(shù)來過濾出入數(shù)據(jù),應(yīng)對來自網(wǎng)絡(luò)的威脅。
目前防火墻的實現(xiàn)方式包括:
TDI
NDIS
IP Filter
Windows Filtering Platform
Winsock Kernel
在以windows XP為主的時期,多數(shù)防火墻選擇前三者中的某一種或者某兩種結(jié)合的方式。在實際應(yīng)用的過程中,同樣存在多個共存無法同時生效的現(xiàn)象。其原因有:
1.過濾時出于效率考慮,直接將允許通過的包交給下層驅(qū)動處理,而不是后續(xù)的防火墻驅(qū)動。
2.由于NDIS和IP Filter比TDI更接近底層,前兩者實現(xiàn)的防火墻會對TDI層造成影響。
3.XP自帶的IP Filter存在誰先設(shè)置誰先生效的問題。安天盾防火墻與防火墻某版本同時使用該方式,如果同時安裝在用戶的機器中,則出現(xiàn)誰先啟動誰先生效的現(xiàn)象。
WFP和Winsock Kernel是自vista之后引入的方式,兼容性相對而言更好,只要實現(xiàn)得當(dāng),一般沒有兼容性的問題。特別是WFP針對防火墻和類軟件做了設(shè)計上的考慮,兼容性問題得到了較好的解決。這也說明,操作系統(tǒng)提供相對規(guī)范的接口是解決安全產(chǎn)品沖突的較好方式。