Steam平台是目前最火的游戏平台,steam有超过1亿的注册用户,有上百万用户同时参与游戏。研究人员在Steam游戏Windows客户端中发现一个0 day权限提升漏洞,利用该漏洞低权限的攻击者可以以administrator运行程序。鉴于Steam平台的用户量,该0 day漏洞会带来巨大的潜在威胁。


0 day权限提升漏洞
在Steam平台的开发者Valve Software(维尔福软件公司)认为该漏洞不适用(Not Applicable)后,2个研究人员公开了该Steam平台的0 day漏洞。Valve不但没有对该漏洞进行奖励,也没有提示说要修复该漏洞,还去告诉研究人员不要泄露该漏洞。
安全研究人员Felix 分析了与Steam相关的Windows服务Steam Client Service,该服务是用来在Windows中以SYSTEM权限启动可执行文件的。研究人员注意到该服务可以由User组用户启动和停止,也就是说登陆计算机的所有用户都有这个权限。
User组用户没有该服务注册表的写权限,因此无法修改注册表来启动其他的可执行文件或提升权限到管理员。但研究人员发现该服务启动或暂停时,会有HKLM\Software\Wow6432Node\Valve\Steam\Apps Registry key子键的完全写权限。
研究人员创建了test key HKLM\Software\Wow6432Node\Valve\Steam\Apps\test,并重启了该服务,然后检查了注册表key权限。发现Users组有HKLM\SOFTWARE\Wow6432Node\Valve\Steam的Full control权限,所有的subkey以及subkey的subkey都可以继承这些权限。研究人员假设RegSetKeySecurity设置了相同的权限,如果是符号链接的话会发生什么呢?研究人员从HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps\test to HKLM\SOFTWARE\test2创建了一个链接,并重启该服务。然后尝试从没有足够权限的subkey来配置符号链接,发现是可以修改key值的。
基于以上尝试,研究人员意识到可以通过在HKLM\Software\Wow6432Node\Valve\Steam\Apps下的subkey在创建符号链接来修改注册表key。
因此,利用该漏洞可以修改以SYSTEM权限运行的服务来启动其他程序。


PoC
研究人员Matt Nelson创建了滥用该漏洞的PoC代码。
Nelson的PoC创建了到HKLM:\SYSTEM\CurrentControlSet\Services\Steam Client Service的符号链接,当服务重启时可以修改要启动的可执行文件。
这是通过在后台启动Administrative权限的Windows命令提示符来实现的,如下图所示提升权限的命令提示符


Nelson称他也向Valve提交过该漏洞。
PoC代码见http://gist.github.com/enigma0x3/03f065be011c5980b96855e2741bf302
2019年8月6日,Steam发布了更新版本,没有修复该漏洞。