xlab2015/08/31 11:50 作者: FlowerCode@腾讯玄武实验室 english version:https://xuanwulab.github.io/2015/08/27/Poking-a-Hole-in-the-Patch/ 0x00 The Problem James Forshaw在2014年11月曾向微软报告过一个Windows Audio Service的本地权限提升漏洞。 Windows Audio Service负责管理系统中所有进程的音频会话。这个服务会把会话参数存储到HKCU/Software/Microsoft/Internet Explorer/LowRegistry/Audio/PolicyConfig。 为了使低权限进程也可修改音频会话的参数,服务在存储时会递归设置所有子键的ACL为Low IL可控。 若在这个注册表键下设置一个符号链接指向高权限注册表键,就可能导致高权限注册表键变为Low IL可控。 0x01 The Patch 微软发布了安全公告MS14-071,并发布了KB3005607补丁修复这个漏洞。 这个补丁增加了两个函数,SafeRegCreateKeyEx和DetectRegistryLink。 DetectRegistryLink大致的代码逻辑如下: #!c++ int DetectRegistryLink(const HKEY key_handle, const wchar_t sub_key_path[], HKEY * out_handle) { int detect_result = 0; HKEY sub_key_handle; LSTATUS status = RegOpenKeyExW(key_handle, sub_key_path, REG_OPTION_OPEN_LINK, KEY_ALL_ACCESS, &sub_key_handle); if (status […]