一、誤報的成因分析
首先需要澄清三個概念,即漏報、錯報和誤報。
漏報:反病毒產品檢測一個可確認是病毒的檢測對象而沒有報警。
錯報:反病毒產品檢測一個可確認是某種病毒的檢測對象,報警為另一種病毒。
誤報:反病毒產品檢測一個可確認不是病毒的檢測對象報警為病毒。
一些用戶將錯報視為一種誤報,實際上這是兩個完全不同的概念,率先澄清這個概念有助於專心與我們今天的主題。
反病毒作為信息安全領域一門嚴謹的工程技術,是以保證信息系統應用為前提的,由於誤報會導致用戶的心理恐慌,對被誤殺產品不好的輿論影響,以及直接導致誤殺,從而導致信息系統出現某種不可預期的後果,因此誤報問題相對漏報和錯報往往更加敏感。在某個非官方技術標准中,對反病毒的誤報率作出了規定,即不能超過萬分之零點五,即對十萬個不同的檢測對象,允許有五個誤報,但對此無論是公眾還是反病毒工作者自己依然覺得不可接受,而希望達到零誤報的境界。
這也反映了工程化應用和學術化研究的不同視角,我們也經常看到從事反病毒理論方面的年輕研究者們經常興奮不已,“看,,只要建立這樣一個簡單的神經網絡(如BP網絡),並把若干樣本和正常文件進行學習,再檢測此前未經神經網絡學習過的樣本集合時,就會獲得80%以上未知病毒檢出率”。這種方法無論如何先進,只要誤報了任何一個windows的系統文件或者program下面的正常程序文件,就都不能不加改動的應用到實際系統中。
這就是為什麼,在實際的反病毒產品中,如果有超過10%的未知病毒檢出率,就可以視為很不錯的結果,而反病毒的一些paper中則往往會出現令人鼓舞的比率。這是因為極低的誤報率是商用反病毒技術的基礎。過去關於未知檢測就有這樣的一個玩笑,100%檢測未知病毒?很簡單,只要對每個檢測對象都報病毒就可以了,也就是說只有100%的誤報率,才能造就100%的檢出率。
當然我們依然需要學術上對新的病毒檢測理論方法的不懈探索,所謂大膽想象,小心求證。
圖 誤報問題全圖
二、誤報的類型
看待誤報,可以有很多種角度,從技術角度,誤報可能是一個bug,而從另外一些角度來看,誤報則是一種爭議,這種爭議比較主要的在於什麼是病毒或惡意代碼這樣的一個標准的不同認識。
對某一個程序,在發生誤報的爭議後,反病毒廠商分析確認依然認為是病毒的情況。這種情況通常不是技術的問題,而是判定病毒或更廣泛的惡意代碼的標准。在現實生活中,其實這種情況要比從技術上的誤報更普遍。
比較常見的標准差異是廣告件廠商與反病毒廠商經常發生的沖突和訴訟,由於裝機量和廣告件廠商的收入息息相關,因此廣告件廠商往往采用一些比較極端的推廣自己的方式、也包括頁面注入和通過其他的廣告件分發、甚至通過蠕蟲或者僵屍網絡分發。反病毒軟件無疑成為了這種經濟模式的天敵,一旦遭打反病毒軟件的查殺,則它們的裝機量就會驟然下降。因此,反病毒廠商最常見的誤報投訴,往往來自這些廠商,伴隨著誤報投訴的則可能還包括律師函、直至法院的傳票。
一些廣告件廠商,慣常的作法是開始極端推廣,達到滿意的裝機量後,為了逃避查殺,則馬上去掉所有不規范之處,再找公正機構公證自己沒有危害,然後向反病毒廠商交涉。在他們眼中,既然反病毒廠商並不是執法機構,自然也沒有道理去清算“原罪”。
還有一種標准差異的情況在於對一些與安全攻防相關工具的定性,比如一些後門程序的作者,都堅稱自己開發的不是後門或木馬,而是網絡遠程管理工具。但對反病毒企業的基本技術標准來看,遠程控制管理工具和後門的根本區別是前者對被控端至少是可見(如有托盤圖標)的,並且是需要有安裝確認過程的。
此外,在部分安全工作者中還有這樣的一種認識,即反病毒軟件應該查殺對所運行主機有害的東西,而無須考慮運行結果是否危害其他主機。比較突出的觀點就是在BO後門開始流行後,一些人認為反病毒廠商不應該查用於控制受害主機的Client端。
被迫的誤報:對反病毒工程師角度來說,還會有一些不得不添加規則去查殺一些並非病毒的東西,這往往是對市場壓力的屈從。網上經常會流傳一些垃圾樣本集合,如所謂101種經典病毒、3000種經典病毒之類,但這其中不但所有的程序都沒有主流操作系統的活性,而且有些根本就不是病毒,但往往很多普通用戶則認為誰的檢測率高,那種軟件就好,因此反病毒工程師則在市場部門的壓力下,違心的添加了這些垃圾規則。
上述的情況雖然也可能被認為誤報,但從反病毒廠商的技術流程角度,不能稱為誤報,因為反病毒軟件報警了他們主觀想要報警的東西,這個過程沒有技術上的問題。
我們需要分析的誤報,則是一個檢測對象被反病毒軟件報警了,但經過反病毒廠商自身確認後,認定不是病毒的檢測對象。
通常來說可能帶來誤報的環節有四個:樣本分析與判定環節、特征提取環節、引擎工作機理環節、未知判定環節。
如果說的更明確一些,讓我們來看一下誤報構成的通路。
情況一:樣本判定環節廠商把一個入庫的非病毒樣本誤判定為病毒,導致這個文件被誤查。
情況二:廠商把一個入庫的非病毒樣本誤判定為病毒,導致這個文件以及這個文件同源的文件被誤查。
情況三:廠商在一個入庫的病毒樣本上提取病毒特征,但這個特征可能在其他正常程序上能夠匹配到。
情況四:廠商的未知病毒檢測機制(如行為加權)判定一個可執行程序風險超過阈值,從而告警,而實際上這是一個正常程序。
當然還有一種極端的情況,即構造者根據廠商的病毒特征構造出一個能被報警的無毒文件。
圖:誤報的類型