21.3 内核漏洞概述
21.3.1 内核漏洞的分类
运行在Ring0上的操作系统内核、设备驱动、第三方驱动能共享同一个虚拟地址空间,可以完全访问系统空间的所有内存,而不像用户态进程那样拥有独立私有的内存空间。由于内核程序的特殊性,内核程序漏洞类型也更加丰富。本篇收集了近年内公布的内核漏洞,并将相关的分析资料整理成如下格式,如图21.3.1所示。
图21.3.1 内核漏洞命名格式您可以从本书的附带资料中得到完整的漏洞列表和资料,如图21.3.2所示。
图21.3.2 已整理的内核漏洞列表截图
我们可以从漏洞的严重程度和漏洞的利用原理两个角度来对内核漏洞进行分类。漏洞的严重程度是指漏洞利用后所造成的危害;漏洞的利用原理是指漏洞利用过程中使用的原理和技术。
按照漏洞严重程度可分为以下4类:远程拒绝服务、本地拒绝服务、远程任意代码执行和本地权限提升,如图21.3.3所示。
图21.3.3 按照漏洞严重程度给内核漏洞分类
"远程拒绝服务"是指能够利用来使得远程系统崩溃或资源耗尽的内核程序bug或缺陷。例如"[2009-09-08][Microsoft][SMB2][SRV2.SYS][远程拒绝服务内核漏洞][36299]"。
"本地拒绝服务"是指能够利用来使得本地系统崩溃或资源耗尽的内核程序bug或缺陷。例如"[2010-04-22][Microsoft][SfnINSTRING][Win32k.sys][本地拒绝服务内核漏洞]"。
另一方面,按照漏洞利用原理可分为以下4类:拒绝服务、缓冲区溢出、内存篡改和设计缺陷,如图21.3.4所示。
图21.3.4 按照漏洞利用原理给内核漏洞分类
其中"内存篡改"类型又可以分成以下3个子类。
任意地址写任意数据:指能够利用来使得向任意内核空间虚拟地址写入任意数据的内核程序bug或缺陷。例如"[2010-01-23][Rising][Antivirus_2008_2009_2010] [RsNTGdi.sys][任意地址写任意数据内核漏洞][本地权限提升][37951]"。
固定地址写任意数据:指能够利用来使得向固定内核空间虚拟地址写入任意数据的内核程序bug或缺陷。目前暂无这种漏洞案例。
任意地址写固定数据:指能够利用来使得向任意内核空间虚拟地址写入固定数据的内核程序bug或缺陷。例如"[2009-07-30][Microsoft][NtUserConsoleControl] [win32k.sys][任意地址写任意数据内核漏洞][本地权限提升]"。
【责任编辑:云霞 TEL:(010)68476606】
点赞 0