Win10保存外地提权0day误差

宣布时间 2018-08-30
一、误差形貌


        2018年8月27日 ,清静研究职员在Twitter上披露了Windows 10系统中的一个0day误差 。该误差是一个外地提权误差 ,保存于Windows的使命调理服务中 ,允许攻击者从USER权限提权到SYSTEM权限 。微软官方现在还没有提供响应的补丁 。


二、误差影响规模


        Windows 10


        Windows Server 2016


三、误差剖析


        Microsoft Windows系统的使命调理服务中高级外地历程挪用(ALPC)接口保存外地提权误差 ,该误差保存于schedsvc.dll� ?橹械腟chRpcSetSecurity函数 ,SchRpcSetSecurity函数界说如下 ,函数功效是设置清静形貌符 。


 HRESULT SchRpcSetSecurity(


   [in, string] const wchar_t* path,


   [in, string] const wchar_t* sddl,


   [in] DWORD flags


 );


        SchRpcSetSecurity第一个参数为路径path ,第二个参数为清静形貌符界说语言 (SDDL) 字符串sddl ,该函数内部挪用了SetSecurity::RpcServer函数 。


尊龙凯时 - 人生就是搏!



        SetSecurity::RpcServer函数首先挪用ConvertStringSecurityDescriptorToSecurityDescriptor 将SchRpcSetSecurity函数传入的sddl字符串转换为清静形貌符SecurityDescriptor 。并挪用TaskPathCanonicalize函数对传入path参数路径规范化为Dst 。



尊龙凯时 - 人生就是搏!


        然后获取Dst路径的JobSecurity清静形貌符pSecurityDescriptor ,继而挪用JobSecurity::Update函数 ,传入SecurityDescriptor参数 ,更新pSecurityDescriptor 。



尊龙凯时 - 人生就是搏!


        最后 ,挪用JobSecurity::AddRemovePrincipalAce函数设置DACL 。



尊龙凯时 - 人生就是搏!


        那么怎样修改指定目的文件的DACL属性呢 ?首先 ,使用ZwSetInformationFile函数为目的文件建设硬链接 。然后 ,挪用_SchRpcSetSecurity函数设置硬链接文件的DACL ,等同于修改目的文件的DACL 。通过设置SchRpcSetSecurity的第3个参数 ,可以为用户Administrators(BA)、Authenticated Users(AU)添加对硬链接文件的写入权限 。


        以PrintConfig.dll文件为例 ,挪用SchRpcSetSecurity函数前 ,文件会见权限如下 ,此时Administrators不具有对文件的写入权限 。


尊龙凯时 - 人生就是搏!



        挪用SchRpcSetSecurity函数后 ,文件的权限如下 ,此时Administrators和Authenticated Users都拥有对文件写入权限 。


尊龙凯时 - 人生就是搏!



        由于SchRpcSetSecurity函数保存清静验证缺陷 ,使适目今用户可修改只读文件的DACL ,添加写入权限 。乐成使用该误差的效果如下图 。



尊龙凯时 - 人生就是搏!


四、清静建议


        不要运行未知泉源的程序 ;


?     在微软更新补丁后 ,实时装置补丁 。


五、参考链接


https://thehackernews.com/2018/08/windows-zero-day-exploit.html


https://www.kb.cert.org/vuls/id/906424