翻译:scriptkid
预估稿费:100RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
上个月我发现并报告了一个Windows注册表整型溢出漏洞,上星期二(2016.10.25)微软发布了该漏洞的修复补丁MS16-124并对该漏洞编号CVE-2016-0070。该漏洞可以导致本地权限提升,影响到多个版本的Windows,因此微软定义为“重要更新”,并建议用户及时安装本次更新。接下来的内容中将对该漏洞的详细信息进行介绍。
漏洞复现
复现该漏洞只需要以下几步:
1. 以非管理员用户登录Windows7
2. 运行regedit*ex.e**打开注册表编辑器
3. 选择注册表编辑器左边的“HKEY_USERS”
4. 点击菜单“文件”=>“加载配置单元”
5. 选择POC文件POC.hiv并打开
6. 在弹出框中的“键值”中输入随意字符
7. 接着你就可以看到蓝屏了,如下图

漏洞分析
该漏洞主要在解析构造的POC.hiv文件时触发,所以,我们先来瞧瞧这个文件长什么样,下图为POC.hiv文件的主要结构

正如图中标明部分所示,整型溢出发生在NKCELL结构中的ValueCount处,构造的值为0x80000001。根据本人的分析,漏洞存在于函数"CmpCheckKey"处,下面为该函数的代码片段:
|
1 2 |
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
下面是函数“_CmpCheckValueList@32”的代码片段
|
1 2 |
|
|
1 2 3 4 5 6 7 8 9 10 11 |
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
下面是函数"_memmove"的代码片段:
|
1 2 3 4 5 6 7 |
|
总结
该漏洞是在执行内存复制操作时由于整型溢出带动堆溢出造成的,成功利用该漏洞可以导致本地权限提升。