CVE-2019-13142:Razer Surround 1.1.63.0权限提升漏洞深度剖析

本文详细分析了Razer Surround音频软件中的本地权限提升漏洞(CVE-2019-13142)。该漏洞源于安装目录权限配置不当,允许低权限用户替换系统服务可执行文件,从而获得SYSTEM权限执行任意代码。文章完整披露了漏洞发现过程、利用方法及厂商修复时间线。

CVE-2019-13142:Razer Surround 1.1.63.0 EoP

版本:Razer Surround 1.1.63.0
测试操作系统:Windows 10 1803 (x64)
漏洞类型:通过不安全文件夹/文件权限实现的Razer Surround权限提升

目的

我希望这篇文章能够激励那些认为漏洞研究令人生畏的初学者。虽然这个漏洞可能被认为很简单,但本文的主要目的是阐述如何入门漏洞研究的方法论和关注点。此外,我也想提醒大家不要忽视那些容易发现的漏洞,无论目标组织规模有多大。

简要描述

Razer Surround安装了一个名为“RzSurroundVADStreamingService”的服务,该服务以SYSTEM权限运行。此服务从“C:\ProgramData\Razer\Synapse\Devices\Razer Surround\Driver”目录运行“RzSurroundVADStreamingService.exe”。由于RzSurroundVADStreamingService.exe和“C:\ProgramData\Razer\Synapse\Devices\Razer Surround\Driver”目录的权限设置允许覆盖服务二进制文件,攻击者可以替换为恶意文件,从而导致权限提升至SYSTEM。

识别与利用

在进行漏洞研究时,选择目标可能具有挑战性。在大型软件平台中寻找漏洞可能会让人望而生畏,因为人们通常认为所有漏洞都很复杂,需要特殊技能才能识别。我想以这个漏洞为例,说明寻找漏洞的行为并不像听起来那么困难。

你可能会问,为什么选择Razer?如何确定要研究的软件?答案很简单:调查你感兴趣的东西。就我而言,我拥有多种Razer产品。当你每天使用某个产品及其相关软件时,很难抑制研究的冲动。

在寻找漏洞时,我通常会在安装目标软件后遵循一个常见的工作流程。这个阶段涉及分析目标软件暴露的潜在攻击面。我通常从基础开始,然后在需要时进行动态/静态分析。我最初通常关注的是:

  • 安装的服务(包括服务权限和服务可执行文件/路径权限)
  • 命名管道(及其ACL)
  • C:\ProgramData等文件夹中的日志文件权限
  • 网络套接字
  • DCOM服务器和托管接口

就工具而言,我主要使用Process Monitor和James Forshaw的NTObjectManager项目。

在Razer Surround的案例中,我首先通过查看进程列表来检查软件使用了哪些特权进程。这显示“RzSurroundVADStreamingService.exe”正以“NT AUTHORITY\SYSTEM”权限运行。下一步是弄清楚该进程是如何启动的。鉴于进程名称中包含“service”,这是一个很好的起点。为了验证,在PowerShell中执行“Get-Service Rz”很容易,它返回了所有名称中包含“Rz”的服务。这引导我找到了“RzSurroundVadStreamingService”系统服务,其ImagePath设置为感兴趣的可执行文件。转储ImagePath后,服务可执行文件的位置引人注目,因为它从“C:\ProgramData\Razer\Synapse\Devices\Razer Surround\Driver\”运行。

为什么这很有趣?默认情况下,“BUILTIN\Users”对C:\ProgramData具有“GenericWrite”访问权限:

软件开发人员常犯的一个错误是没有正确锁定C:\ProgramData中任何创建的子文件夹的权限。如果安装程序只是在C:\ProgramData中创建一个文件夹,该文件夹及其任何子文件夹将继承C:\ProgramData的权限,其中包括“BUILTIN\Users”的“GenericWrite”访问权。

在这种情况下,不当的文件和文件夹权限是罪魁祸首,因为“Everyone”最终被授予对“C:\ProgramData\Razer\Synapse\Devices\Razer Surround\Driver”中任何文件的“FullControl”权限。

如前所述,此路径是服务“RzSurroundVADStreamingService”的ImagePath指向服务可执行文件的位置。鉴于低权限用户对该文件夹和包含的文件具有“FullControl”权限,可以替换“RzSurroundVADStreamingService”系统服务的服务可执行文件:

一旦payload被复制,重启主机将导致服务以SYSTEM权限启动新的可执行文件。在这种情况下,新的服务可执行文件将以SYSTEM权限启动cmd.exe:

Razer通过将“RzSurroundVADStreamingService.exe”及相关依赖项移动到“C:\Program Files (x86)\Razer”中的安全位置来修复此漏洞。

披露时间线

尽管SpecterOps致力于透明化,但我们承认攻击者一旦新技术公开后会迅速采用。这就是为什么在公开新漏洞或攻击技术之前,我们通常会通知相应的供应商,提供充足的时间来缓解问题,并通知选定的、可信赖的供应商,以确保能够尽快向客户提供检测。

  • 2019年3月20日 — 向Razer发送初始报告
  • 2019年3月21日 — 收到Razer的报告确认
  • 2019年4月30日 — 初始报告后30天
  • 2019年5月2日 — Razer提供了修复版本进行测试
  • 2019年5月2日 — 修复得到验证
  • 2019年5月20日 — 初始报告后60天
  • 2019年6月6日 — 联系Razer询问公开修复的时间表
  • 2019年6月6日 — Razer告知我修复应该已上线,但需要开发团队验证
  • 2019年6月7日 — 告知Razer网站或Surround的更新机制上未提供修复
  • 2019年6月10日 — Razer告知我存在一些内部混淆,修复将在6月底上线
  • 2019年6月11日 — 告知Razer我将推迟披露,直到修复上线
  • 2019年6月20日 — 初始报告后90天,延期获得批准
  • 2019年7月1日 — Razer告知我已向开发团队发出关于修复何时推送上线的通知
  • 2019年7月5日 — 修复发布

-Matt N.

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计