【编者按:这是国外高手所写的一篇认为卡巴斯基在其杀毒软件里使用了许多不安全技术的文章,我们将分期将其一一展现给大家。】
卡巴斯基发布了称为卡巴斯基互联网安全套件5.0的个人安全软件包。该软件包里含有很多个人安全软件程序,包括防火墙和杀毒软件。
我们这篇文章的核心就是要谈谈卡巴斯基的杀毒软件。跟很多其他的杀毒软件一样,卡巴斯基的杀毒软件也是既能手动操作扫描病毒也可以实时扫描病毒。
卡巴斯基的杀毒软件系统(KAV)在其内核层组件中使用了很多不安全的技术。这些技术中的一部分甚至有可能会导致系统安全遭到威胁。
问题所在
实时的补丁更新服务
尽管KAV看起来好像是使用文件过滤系统——这是一种标准的拦截文件存取操作的Windows机制(尤其像是为杀毒软件而设的),KAV还使用了一系列API层的函数钩子来拦截对文件的存取。如果某个函数在用户层下可以调用的话,那么执行那些内核层的钩子函数会非常危险,人们必须十分谨慎地验证所有的参数的可靠性(否则系统可能会受到未授权的程序的威胁)。另外,通常删除跟内核层相关联的代码也将面临很大危险,因为你很难保证没有线程在某个特定代码区域运行,也很难做到不对系统造成任何威胁就能解开钩子。KAV还跟很多其他的系统服务相关联,这是它所谓的保护进程不被反编译或者终止而进行的措施。
不幸的是,KAV程序员们并没有正确的验证那些与系统调用相关联的参数,因此导致在此处出现了很多的漏洞,最终这些漏洞使非授权的用户层程序能够造成系统的崩溃。这些漏洞中的一部分甚至允许人们扩大本地权限(尽管笔者并没有花时间来验证这点是否可行)。
KAV与下列系统服务相关联(在WinDbg中,把一个运行着KAV的系统里的 nt!KeServiceDescriptorTableShadow 跟一个干净系统里的相比较,你很容易就能发现这些关联)。
kd> dps poi ( nt!KeServiceDescriptorTableShadow ) l dwo ( nt!KeServiceDescriptorTableShadow + 8 ) 8191c9c8 805862de nt!NtAcceptConnectPort 8191c9cc 8056fded nt!NtAccessCheck ... 8191ca2c f823fd00 klif!KavNtClose ... 8191ca84 f823fa20 klif!KavNtCreateProcess 8191ca88 f823fb90 klif!KavNtCreateProcessEx 8191ca8c 80647b59 nt!NtCreateProfile 8191ca90 f823fe40 klif!KavNtCreateSection 8191ca94 805747cf nt!NtCreateSemaphore 8191ca98 8059d4db nt!NtCreateSymbolicLinkObject 8191ca9c f8240630 klif!KavNtCreateThread 8191caa0 8059a849 nt!NtCreateTimer ... 8191cbb0 f823f7b0 klif!KavNtOpenProcess ... 8191cc24 f82402f0 klif!KavNtQueryInformationFile ... 8191cc7c f8240430 klif!KavNtQuerySystemInformation ... 8191cd00 f82405e0 klif!KavNtResumeThread ... 8191cd58 f82421f0 klif!KavNtSetInformationProcess ... 8191cdc0 f8240590 klif!KavNtSuspendThread ... 8191cdcc f82401c0 klif!KavNtTerminateProcess |