Windows 版本的高人气游戏客户端 Steam 曝出零日权限提升漏洞,该漏洞使得本不具备相关高权限的攻击者能够以管理员身份运行程序。
权限提升漏洞属于一类 bug,可使原本权限较低的用户以更高权限或者管理员权限启动可执行文件。随着 Steam 迎来超过 1 亿注册用户且同时在线人数多达数百万,这一严重风险很可能被恶意软件滥用,从而执行各类预料之外的操作。
权限提升漏洞
在 Valve 方面确定该漏洞“不适用”后,两位研究人员公开披露了此项 Steam 客户端零日漏洞。看来这回 Vavle 有点“作死”了——之前研究人员在 HackerOne 大会上将其提交至 Valve 的 bug 赏金计划时,该公司表示不予支持资金或者表示将进行修复,同时要求研究人员不得透露相关信息。
在昨天发布的一份报告中,安全研究员 Felix 对与 Steam 客户端相关的 Windows 服务(即「Steam 客户端服务」)进行了分析。在启动时,此服务会在 Windows 系统中以 SYSTEM 权限启动其可执行文件。研究人员还注意到,该服务可以由“用户”组进行启动与停止——所谓“用户”组,几乎涵盖一切能够登录计算机的使用者。
不过,此服务的注册表项无法由“用户”组写入,因此攻击者无法通过修改利用该服务以管理员权限启动其它可执行文件。
但在此之后,这位研究人员发现了某些奇怪的情况。当该服务启动及停止时,它会为“用户”组提供对 HKLM\Software\Wow6432Node\Valve\Steam\Apps 注册表项下各子项的完全写入权限。
“我创建了测试键 HKLM\Software\Wow6432Node\Valve\Steam\Apps\test 并重启该服务并检查了注册表键权限。我发现“用户”组对于 HKLM\SOFTWARE\Wow6432Node\Valve\Steam 拥有“全面控制”权限,而且这些权限能够继承至所有子键及其更低一级的子键。我假设 RegSetKeySecurity 设置了相同的权限,如果存在 symlink,那么肯定会发生有趣的情况。我创建了一条从 HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps\test 到 HKLM\SOFTWARE\test2 and restarted the service 的链接。”
在此之后,该研究人员尝试将其中一个子键的 symlink 配置为另一个没有足够权限的键。在重新启动服务之后,他发现自己已经能够修改该键。
了解到这些,研究人员意识到他已经能够通过 HKLM\Software\Wow6432Node\Valve\Steam\Apps 之下的子键轻松创建 symlink,从而对原本安全的注册表键进行修改并随后重启服务。
这可能允许攻击者对具有 SYSTEM 权限的服务进行修改,并利用它启动其它原本权限较低的程序。
如此一来,权限提升漏洞也就出现了。
另一位研究人员披露概念验证
在 Felix 发布披露文章之后,另一位名叫 Matt Nelson 的研究人员又在 enigma0x3 别名之下发现了另一权限提升漏洞,他还通过 GitHub 发布了该漏洞的一份概念验证脚本。
Nelson 的概念验证是创建一个指回 HKLM:\SYSTEM\CurrentControlSet\Services\Steam Client Service 的 symlink,以确保它能够在更改服务重新启动时所实际启动的可执行文件。
如果该概念验证成功,则后台即会运行一个具有管理员权限的 Windows 命令提示符,如下图所示。
具有提升权限的命令提示符
Nelson 表示,他也曾经向 Valve 披露这一问题。
熟悉此事的消息人士表示,HackerOne 方面已决定重新审查这份 bug 报告以做出进一步调查。
我们也与 Valve 方面取得联系,希望了解该项漏洞尚未修复的具体原因,但截至发稿之时对方仍未给出答复。
原文链接:
评论