作者:啟明星辰ADLab

漏洞描述

2018年8月27日,安全研究人員在Twitter上披露了Windows 10系統中的一個0day漏洞。該漏洞是一個本地提權漏洞,存在于Windows的任務調度服務中,允許攻擊者從USER權限提權到SYSTEM權限。微軟官方目前還沒有提供相應的補丁。

漏洞影響范圍

Windows 10
Windows Server 2016

漏洞分析

Microsoft Windows系統的任務調度服務中高級本地過程調用(ALPC)接口存在本地提權漏洞,該漏洞存在于schedsvc.dll模塊中的SchRpcSetSecurity函數,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函數首先調用ConvertStringSecurityDescriptorToSecurityDescriptorSchRpcSetSecurity函數傳入的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,添加寫入權限。成功利用該漏洞的結果如下圖。

安全建議

  • 不要運行未知來源的程序
  • 在微軟更新補丁后,及時安裝補丁

參考鏈接


啟明星辰積極防御實驗室(ADLab)

ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近400個,持續保持國際網絡安全領域一流水準。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/688/