CVE-2019-13142:Razer Surround 1.1.63.0权限提升漏洞分析

本文详细分析了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 设计