Razer Surround权限提升漏洞分析(CVE-2019-13142)

本文详细分析了Razer Surround 1.1.63.0中的权限提升漏洞,通过不安全的文件夹权限允许低权限用户替换系统服务可执行文件,从而获得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"系统服务的服务可执行文件:

一旦复制了有效负载,重新启动主机将导致服务以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 设计