2019-09-19 17:09:0710590人阅读
漏洞
The vulnerability itself is very simple.
Steam出于一些目的会安装Steam Client Service服务。通过检查该服务的SDDL(https://habr.com/ru/company/pm/blog/442662/):
O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)
研究人员注意到了(A;;RPWP;;;BU),这说明任何来自于组Users的用户都可以开始或停止该服务。
然后分析该服务的行为。研究人员发现了一些奇怪的注册表。该服务枚举了HKLM\Software\Wow6432Node\Valve\Steam\Apps的subkey,并为其设置了安全描述,如下图所示:
“What is this security description about? I created test key”
这些安全描述是什么呢?研究人员创建了测试key HKLM\Software\Wow6432Node\Valve\Steam\Apps\test,并重启了该服务,然后检查注册表key的权限。研究人员发现HKLM\SOFTWARE\Wow6432Node\Valve\Steam有来自Users组的Full control权限,所有的subkey和subkey的subkey都可以继承这些权限。研究人员假设RegSetKeySecurity可以设置相同的权限,并测试如果是符号链接的话是发生什么。研究人员首先创建了一个来自HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps\test to HKLM\SOFTWARE\test2的链接,并重启了该服务。
Steam的服务设置了目标key的安全描述符。检查key的SDDDL:
(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)
可以看出,所有用户都对该key具有完全(读写)权限。这就是该服务为key设置的安全描述符。
所以研究人员就获取了一个可以控制注册表中所有key的原语,而且很容易可以变成完整的权限提升。研究人员选择了对应Windows Installer服务的key HKLM\SYSTEM\ControlSet001\Services\msiserver,因为该服务可以由任意用户启动,但是是以NT AUTHORITY\SYSTEM权限运行程序的。在控制后,就需要修改HKLM\SYSTEM\ControlSet001\Services\msiserver key的ImagePath值,并重启Windows Installer服务。ImagePath中的程序就会以NT AUTHORITY\SYSTEM权限开始。
将以上所有加起来就可以在安装了Steam的Windows计算机上获得以最高权限运行应用程序的漏洞利用。
研究人员在GitHub上分析了PoC代码,参见http://gist.github.com/enigma0x3/03f065be011c5980b96855e2741bf302。
研究人员早在6月15日就通过HackeOne提交了漏洞,但没有被接收(N\A不适用),给出的解释是“Attacks that require the ability to drop files in arbitrary locations on the user's filesystem,Attacks that require physical access to the user’s device”。
https://amonitoring.ru/article/steamclient-0day/
本文为百度安全原创,转载请注明出处及原文链接