文/肖新光
除了文件監(jiān)控、防火墻、瀏覽器防護的潛在兼容性問題之外,在多款軟件共存的情況下,主動防御的兼容性問題尤為嚴重。主動防御主要可以分為兩個方面來看待:
1. 自我保護
多款安全軟件都保護自己的監(jiān)控點不被修改,特別是使用了inline hook或者對系統(tǒng)設備、內(nèi)核對象、SSDT進行了hook的產(chǎn)品。類似安天Atool等Rootkit檢查工具曾使用過替換進程SSDT保證自己的hook不被修改,但也導致使用SSDT hook的主動防御完全失效的副作用。360安全衛(wèi)士曾使用替換SSDT的技術對自己的監(jiān)控點進行保護,導致與其共存的安全軟件主動防御功能中關于SSDT的部分完全失效。
一旦發(fā)現(xiàn)自己的監(jiān)控點被修改,則會對監(jiān)控點進行修復,也就是重新hook。這就有可能導致多款安全軟件反復爭奪監(jiān)控點,或者hook直接互相調(diào)用造成死鎖,最終耗盡系統(tǒng)資源,導致機器死機。
由于自我保護的存在,病毒感染安全軟件后,依然會被安全軟件的自我保護所保護,其他安全軟件可能無法讀取其內(nèi)容進行檢測,或者可以檢測,但是無法結束相應的進程。
2. 惡意行為分析
一款軟件出于安全角度考慮,不調(diào)用被hook的原始API,則會導致其他軟件在分析惡意行為時,無法檢測到該行為,進而造成程序的行為序列發(fā)生改變,最終導致行為分析誤報或者漏報。
由于安全軟件的某些行為和惡意軟件具有相似性,例如:對API進行的某些hook,在多款安全軟件共存的情況下,很有可能一款安全軟件被另一款報為病毒,這也是一種誤報。
為了保證自身進程的行為不被重復記錄或者對行為分析產(chǎn)生影響,安全軟件可能會對特殊API的調(diào)用參數(shù)含義進行修改,增加自身需要的標識,而這些標識可能會造成后續(xù)的監(jiān)控產(chǎn)生不可預知的行為,最糟糕的情況就是導致系統(tǒng)藍屏。
對于ring3與ring0結合判斷的主動防御,處于二者中間的其他安全軟件對數(shù)據(jù)的修改可能會造成ring0緩沖區(qū)的溢出(例如:ring3的API掛鉤通知ring0的驅(qū)動,需要26字節(jié)實際數(shù)據(jù)可能由于中間沙箱軟件的路徑重定向被改為27字節(jié)或者更多)或者被截斷,導致系統(tǒng)藍屏或者漏報。
以上僅僅是主動防御潛在兼容性問題的一部分,由于主動防御技術本身的復雜度,在多款實用主動防御技術的安全軟件共存的情況下,兼容性問題就更容易出現(xiàn),也更加嚴重,這里說明的僅僅是一部分,不是全部。
兼容性是反病毒廠商的核心困擾之一,由于反病毒使用大量的內(nèi)核技術、驅(qū)動等,一旦出現(xiàn)兼容性的后果,其所造成的影響,要遠嚴重于其他應用軟件。同時反病毒產(chǎn)品為了對抗病毒的一些自我防護機制,也會使問題的處置變得比較復雜。因此,多種反病毒軟件之間沖突引發(fā)的問題要比其他軟件沖突問題后果更加嚴重。
兼容性沖突問題使反病毒廠商技術支持的難度增大,由于環(huán)境的復雜性,問題變得更加難以排查和處理。
特別是企業(yè)版產(chǎn)品,廠商承擔著更大的責任和支持義務,如果由于沖突性問題,帶來問題,對于問題的責任、后果的認定等方面都帶來較大壓力。
同時,有的沖突問題由于需要廠商間相互溝通才能解決,因此增加了支持壓力和解決用戶問題的周期。
在實時監(jiān)控技術在Windows體系下剛剛成熟時,能夠提供相關機制的廠商不多,監(jiān)控點也相對較少,因此在出現(xiàn)兼容沖突問題時,廠商之間可以相互改造和規(guī)避。后來由于安全廠商過多,而監(jiān)控點也在不斷增加,解決相關問題的復雜度已經(jīng)超出了每個廠商的個體能力。
因此在經(jīng)歷了大量沖突事件后,部分主流廠商選擇了從安裝環(huán)節(jié)保證互斥的方法。其具體操作是:在安裝時檢測用戶系統(tǒng)中是否有其他反病毒產(chǎn)品,如果有則提示用戶可能的沖突后果,并提示用戶卸載。如果用戶不卸載,則明示用戶共存后果,或者選擇自身不予安裝。但先被裝載到主機上的反病毒產(chǎn)品,并不監(jiān)控其他反病毒產(chǎn)品的安裝行為,以及進行提示。這就是約定俗成的“后卸前”原則。
這種方法雖然影響到了一些用戶讓多種反病毒產(chǎn)品共存的意愿,但其形成了一個單向的邏輯,即后安裝的有告知和卸載的主動權,先裝入主機的接受用戶的選擇。
這個過程是有一定合理性的:

需要指出的是,盡管反病毒廠商之間存在著長期的競爭,但主流廠商之間的技術層次的互通,技術資源(如病毒樣本)的分享是一直存在的。
通過互斥一定程度上解決了兼容性問題。
保證了用戶的知情權、選擇權和自覺權。用戶是在被告知后果的情況下,做出了符合個人意愿的選擇。
用戶在后一個反病毒產(chǎn)品的體驗中,如果覺得不如之前的軟件,可以通過再安裝前一個軟件的方法,重新選擇之前的產(chǎn)品。這確保了廠商之間的競爭基本上是用戶體驗和效果的競爭,而沒有賴在用戶機器上不走的情況。
但互斥性的方法,所帶來的問題也顯而易見,那就是用戶很難同時分享兩個產(chǎn)品的保障。而這對于地下經(jīng)濟產(chǎn)業(yè)鏈所驅(qū)動的木馬小眾化、數(shù)量爆炸化的嚴峻安裝形式,只靠任何一個廠商的力量,可能都很難保證用戶安全。相關產(chǎn)品能夠合理共存、機制互補更符合用戶價值的最大化。
需要指出的是,盡管反病毒廠商之間存在著長期的競爭,但主流廠商之間的技術層次的互通,技術資源(如病毒樣本)的分享是一直存在的。加之管理部門、測評機構、CERT組織等的協(xié)調(diào)和努力,各廠商之間基本遵循了一些基礎的原則。在歷史上較長的時間內(nèi),盡管出現(xiàn)過各種商業(yè)摩擦,但一直都把兼容沖突作為期望回避的問題,而不是作為競爭的籌碼和手段。有關問題的復雜化和擴大化是后期才出現(xiàn)的。
這說明任何沒有明確行業(yè)規(guī)范為支撐的原則,都是脆弱的。在“后卸前”的用戶自主選擇鏈條中,只要有一家采用不良手段(如通過反人機工程的方法,在競爭對手產(chǎn)品安裝過程中,給予多次提示,造成用戶一次選擇不當就無法安裝、或者安裝后失效等),保護自己所謂裝機率,則會連帶造成被攔截的廠商進行報復,從而導致規(guī)則被打破,形成惡性循環(huán),最終導致通過惡意構造兼容性壁壘和陷阱變成普遍性的行為。因此,自然形成的事實標準需要形成行業(yè)規(guī)范,才能具有權威性。
反病毒產(chǎn)品作為主機安全的核心屏障,不僅要使用戶遠離安全威脅,也要保護用戶的知情權和選擇權。尊重用戶卸載意愿,包括在保證穩(wěn)定性基礎上,尊重用戶希望多個安全產(chǎn)品共存的愿望,不僅是用戶權益的體現(xiàn),也是廠商不怕被用戶進行比較選擇的自信心的體現(xiàn)。因為這個行業(yè)之所以前進,正是因為用戶擁有不斷嘗試和選擇的機會,這是每個廠商的動力之源。
同時,我們需要意識到用戶期望多安全產(chǎn)品共存,是當前嚴峻的安全形勢所催生的真實需求。反病毒產(chǎn)品如果能提供更多的定制選擇,如提供行命令的掃描工具、提供掃描界面和監(jiān)控機制(甚至不同監(jiān)控機制)的可定制安裝,就能讓用戶在獲得多個廠商的檢測能力的基礎上,較少地付出兼容性代價。如果安全廠商之間進一步強化其互通體制和配置策略,未來能夠支持用戶更靈活的定制多產(chǎn)品共存的監(jiān)控策略,則將創(chuàng)造一種更為理想的用戶境界。
而主流操作系統(tǒng)廠商如果能對監(jiān)控基礎給出更為豐富的接口和定義相應的規(guī)范,包括保證公共安全接口統(tǒng)一嵌套化,則能進一步降低發(fā)生沖突的概率。
當然,我們希望用戶理解,只要反病毒產(chǎn)品的實時監(jiān)控和防御的使命存在,不同產(chǎn)品之間的兼容沖突問題就必然存在,不可能有終極解決之道。我們也希望傳達給用戶的信息是大量安全廠商所研發(fā)的充滿不同個性的安全產(chǎn)品,是攻擊者需要逾越的一個整體代價。只有八仙過海、各顯其能的廠商個性存在,才能保證網(wǎng)絡整體安全水準。多個廠商的共存和競爭,是互聯(lián)網(wǎng)安全的基礎保證。