昨日,V社员工@percybysshe主动披露了一份标题为“Steam Deck Single Click Root Remote Code Execution”的安全报告,结合上下文可翻译为“Steam Deck的最新系统存在单击便可以获得root权限的远程代码执行漏洞”。
这个漏洞意味Steam Deck用户只需要点击Steam聊天中好友发给你的精心设计的链接便可以获得系统最高权限,从而可以盗卖你的游戏皮肤或者向其他人发送钓鱼和欺诈信息。
V社官方对漏洞的描述较为委婉:“(Steam Deck所用的) Linux客户端中包含的 Chromium 嵌入式框架版本容易受到允许修改本地文件的 v8 漏洞的影响。研究人员演示了将本地文件修改链接到本地权限升级”。
这个漏洞属于高危漏洞,但是Valve仅将报告记为“信息丰富”,这意味着Valve暂未采取行动去修复漏洞。因此,请各位玩家谨慎点击Steam聊天中的链接。
Valve的简报
该漏洞的报告者@g1a55er似乎觉得V社的总结太简单继而给出了更加详细的补充:
Steam Deck的最新系统存在容易受到远程代码执行漏洞的影响,该漏洞可以与权限提升漏洞交互,以便在用户单击 Steam 聊天中指向恶意制作的网页的链接后,为攻击者提供完全 root 执行权限。用户单击连接后,漏洞就可以成功运行,无需进一步的用户交互。
具体来说,steamwebhelper 中使用的 Chromium 嵌入式框架 (CEF) 基于 Chromium 版本 85.0.4183.121。此版本容易受到CVE-2020-16040的攻击。如果steamwebhelper加载恶意页面,则可以利用该CVE在steamwebhelper进程中获取RCE。
steamwebhelper 进程以禁用 CEF 沙箱的用户“deck”身份运行。这意味着攻击者在利用后立即可以访问所有用户的文件,因为所有用户内容都可以通过“deck”读取。可能最关键的是,这包括存储在 ~/.local/share/Steam/ssfn* 中的 Steam Sentry 凭证文件,该文件将出现在所有 Steam Decks 上并促进 Steam 帐户接管。
从这里,我们可以转向获得完全的 root 访问权限。默认情况下,deck 用户具有 sudoers 权限,且未设置密码。因此,我们需要做的就是设置一个密码,然后将该密码提供给“sudo”二进制文件以获得完整的 root shell。
然而,steamwebhelper 执行时设置了“无新权限”标志,这阻止我们直接sudo从初始 RCE 上下文进行调用。通过修改甲板用户有权访问的另一个进程最终将在 steamwebhelper 进程之外执行的某些可执行文件,可以轻松规避此问题。考虑到套牌用户的大量文件访问权限(例如访问所有游戏、整个 Steam 可执行文件、其他应用程序等),有多种选项可供选择。我验证了至少存在一个这样的易受攻击的站点,通过在 中植入恶意负载来促进这种权限升级~/.bashrc,该负载似乎至少在设备重新启动时就会执行。所有这些步骤都可以在 Chrome RCE 执行的 shellcode 中实现。
一旦获得持久根访问权限,您就可以访问设备上的所有文件和外围设备。
g1a55er的简报
#逆天bug#