卡巴斯基反病毒,反病毒误报问题机理蓝皮书

反病毒误报问题机理蓝皮书 - 电脑安全 - 电脑教程网

反病毒误报问题机理蓝皮书

日期:2006-10-19   荐:

  一、误报的成因分析

  首先需要澄清三个概念,即漏报、错报和误报。

  漏报:反病毒产品检测一个可确认是病毒的检测对象而没有报警。

  错报:反病毒产品检测一个可确认是某种病毒的检测对象,报警为另一种病毒。

  误报:反病毒产品检测一个可确认不是病毒的检测对象报警为病毒。

  一些用户将错报视为一种误报,实际上这是两个完全不同的概念,率先澄清这个概念有助于专心与我们今天的主题。

  反病毒作为信息安全领域一门严谨的工程技术,是以保证信息系统应用为前提的,由于误报会导致用户的心理恐慌,对被误杀产品不好的舆论影响,以及直接导致误杀,从而导致信息系统出现某种不可预期的后果,因此误报问题相对漏报和错报往往更加敏感。在某个非官方技术标准中,对反病毒的误报率作出了规定,即不能超过万分之零点五,即对十万个不同的检测对象,允许有五个误报,但对此无论是公众还是反病毒工作者自己依然觉得不可接受,而希望达到零误报的境界。

  这也反映了工程化应用和学术化研究的不同视角,我们也经常看到从事反病毒理论方面的年轻研究者们经常兴奋不已,“看,只要建立这样一个简单的神经网络(如BP网络),并把若干样本和正常文件进行学习,再检测此前未经神经网络学习过的样本集合时,就会获得80%以上未知病毒检出率”。这种方法无论如何先进,只要误报了任何一个windows的系统文件或者program下面的正常程序文件,就都不能不加改动的应用到实际系统中。

  这就是为什么,在实际的反病毒产品中,如果有超过10%的未知病毒检出率,就可以视为很不错的结果,而反病毒的一些paper中则往往会出现令人鼓舞的比率。这是因为极低的误报率是商用反病毒技术的基础。过去关于未知检测就有这样的一个玩笑,100%检测未知病毒?很简单,只要对每个检测对象都报病毒就可以了,也就是说只有100%的误报率,才能造就100%的检出率。

  当然我们依然需要学术上对新的病毒检测理论方法的不懈探索,所谓大胆想象,小心求证。

图 误报问题全图

  二、误报的类型

  看待误报,可以有很多种角度,从技术角度,误报可能是一个bug,而从另外一些角度来看,误报则是一种争议,这种争议比较主要的在于什么是病毒或恶意代码这样的一个标准的不同认识。

  对某一个程序,在发生误报的争议后,反病毒厂商分析确认依然认为是病毒的情况。这种情况通常不是技术的问题,而是判定病毒或更广泛的恶意代码的标准。在现实生活中,其实这种情况要比从技术上的误报更普遍。

  比较常见的标准差异是广告件厂商与反病毒厂商经常发生的冲突和诉讼,由于装机量和广告件厂商的收入息息相关,因此广告件厂商往往采用一些比较极端的推广自己的方式、也包括页面注入和通过其他的广告件分发、甚至通过蠕虫或者僵尸网络分发。反病毒软件无疑成为了这种经济模式的天敌,一旦遭打反病毒软件的查杀,则它们的装机量就会骤然下降。因此,反病毒厂商最常见的误报投诉,往往来自这些厂商,伴随着误报投诉的则可能还包括律师函、直至法院的传票。

  一些广告件厂商,惯常的作法是开始极端推广,达到满意的装机量后,为了逃避查杀,则马上去掉所有不规范之处,再找公正机构公证自己没有危害,然后向反病毒厂商交涉。在他们眼中,既然反病毒厂商并不是执法机构,自然也没有道理去清算“原罪”。

  还有一种标准差异的情况在于对一些与安全攻防相关工具的定性,比如一些后门程序的作者,都坚称自己开发的不是后门或木马,而是网络远程管理工具。但对反病毒企业的基本技术标准来看,远程控制管理工具和后门的根本区别是前者对被控端至少是可见(如有托盘图标)的,并且是需要有安装确认过程的。

  此外,在部分安全工作者中还有这样的一种认识,即反病毒软件应该查杀对所运行主机有害的东西,而无须考虑运行结果是否危害其他主机。比较突出的观点就是在BO后门开始流行后,一些人认为反病毒厂商不应该查用于控制受害主机的Client端。

  被迫的误报:对反病毒工程师角度来说,还会有一些不得不添加规则去查杀一些并非病毒的东西,这往往是对市场压力的屈从。网上经常会流传一些垃圾样本集合,如所谓101种经典病毒、3000种经典病毒之类,但这其中不但所有的程序都没有主流操作系统的活性,而且有些根本就不是病毒,但往往很多普通用户则认为谁的检测率高,那种软件就好,因此反病毒工程师则在市场部门的压力下,违心的添加了这些垃圾规则。

  上述的情况虽然也可能被认为误报,但从反病毒厂商的技术流程角度,不能称为误报,因为反病毒软件报警了他们主观想要报警的东西,这个过程没有技术上的问题。

  我们需要分析的误报,则是一个检测对象被反病毒软件报警了,但经过反病毒厂商自身确认后,认定不是病毒的检测对象。

  通常来说可能带来误报的环节有四个:样本分析与判定环节、特征提取环节、引擎工作机理环节、未知判定环节。

  如果说的更明确一些,让我们来看一下误报构成的通路。

  情况一:样本判定环节厂商把一个入库的非病毒样本误判定为病毒,导致这个文件被误查。

  情况二:厂商把一个入库的非病毒样本误判定为病毒,导致这个文件以及这个文件同源的文件被误查。

  情况三:厂商在一个入库的病毒样本上提取病毒特征,但这个特征可能在其他正常程序上能够匹配到。

  情况四:厂商的未知病毒检测机制(如行为加权)判定一个可执行程序风险超过阈值,从而告警,而实际上这是一个正常程序。

  当然还有一种极端的情况,即构造者根据厂商的病毒特征构造出一个能被报警的无毒文件。

图:误报的类型

标签: