CVE-2019-19248:EA Origin客户端本地权限提升漏洞深度剖析

本文详细分析了EA Origin游戏客户端中存在的一个本地权限提升漏洞(CVE-2019-19248)。该漏洞允许低权限用户通过操纵服务创建的配置文件并利用硬链接,覆盖高权限文件的DACL,最终获得SYSTEM权限。文章深入阐述了漏洞原理、利用步骤及厂商修复时间线。

CVE-2019-19248:EA Origin客户端本地权限提升漏洞

版本:Origin Client version 10.5.35.22222-0 测试操作系统:Windows 10 1709 (x64) 安全公告:https://www.ea.com/security/news/easec-2019-001-elevation-of-privilege-vulnerability-in-origin-client EA 博客:https://www.ea.com/security/news/origin-security-update-in-collaboration-with-external-security-researchers 漏洞:Origin Client Service DACL 覆盖权限提升 简要描述:安装Origin时,它会附带几个不同的服务,例如“Origin Client Service”。低权限用户可以停止和启动此服务。当Origin客户端服务启动时,它会检查“C:\ProgramData\Origin\local.xml”是否存在。如果此文件不存在,服务会创建它并授予“Everyone”组对该文件的“完全控制”权限。由于低权限用户对此文件拥有权限,因此可以在“C:\ProgramData\Origin\local.xml”上创建一个指向另一个文件的硬链接,导致目标文件被授予“Everyone”组“完全控制”权限。低权限用户可利用此漏洞覆盖特权文件的DACL,从而导致权限提升至“NT AUTHORITY\SYSTEM”。

漏洞原理详解

当Origin安装后,它会附带几个不同的服务。其中之一是“Origin Client Service”。低权限用户可以停止和启动此服务:

当重启Origin客户端服务时,它会检查“C:\ProgramData\Origin\local.xml”是否存在。如果不存在,它将创建该文件,然后设置文件的安全描述符,授予Everyone对该文件的GENERIC_ALL权限:

由于低权限用户控制着该文件,因此可以删除它并用一个指向特权文件的硬链接替换。在本例中,我们创建了一个指向“C:\Program Files (x86)\Origin\OriginWebHelperService.exe”的硬链接(使用James Forshaw的Symbolic Link Testing工具)。

创建硬链接后,重新启动“Origin Client Service”服务将导致其尝试在“C:\ProgramData\Origin\local.xml”上设置DACL,以授予“AuthenticatedUsers”组“完全控制”权限。由于存在硬链接,它会跟随硬链接,最终在“C:\Program Files (x86)\Origin\OriginWebHelperService.exe”上设置DACL:

“C:\Program Files (x86)\Origin\OriginWebHelperService.exe”的DACL被覆盖后,要提升权限只需停止Origin Web Helper Service,替换“C:\Program Files (x86)\Origin\OriginWebHelperService.exe”,然后再次启动服务即可:

服务将无法启动,因为“Payload.exe”不是服务可执行文件,但服务会启动它,并且cmd.exe将以“NT AUTHORITY\SYSTEM”权限运行,从而实现权限提升。

此漏洞已在版本10.5.56.33908中修复。Origin团队重写了Origin客户端,加入了“Restricted”模式,该模式对所有Origin文件应用了限制性ACL。

披露时间线

  • 2019年3月13日:将漏洞发送给EA安全团队
  • 2019年3月14日:EA确认漏洞并分配案例编号
  • 2019年3月28日:跟进EA,询问是否需要任何信息
  • 2019年4月4日:EA将报告分类为高严重性问题,并通知我他们正在修复,并通过额外搜寻发现了其他变体
  • 2019年5月2日:联系EA,告知60天窗口期即将结束
  • 2019年5月23日:EA回复称仍在修复中,且在修复根本原因时遇到一些问题
  • 2019年6月17日:联系EA,告知90天期限已过。请求更新并询问是否需要额外时间
  • 2019年6月25日:EA告知我他们在实施不影响旧游戏版本的修复时仍然遇到问题。表示已找到解决方案,但需要一些时间开发。EA要求安排电话会议。
  • 2019年6月25日:回复EA安排电话会议的请求
  • 2019年7月8日:与EA的安全和工程团队进行电话会议,鉴于问题修复的复杂性,同意定期延长30天
  • 2019年8月12日:向EA发送该问题的另一个变体
  • 2019年8月13日:EA告知我他们有新的Origin客户端的Alpha初步版本,并表示预计在9月底至10月初进行修复
  • 2019年9月6日:联系EA以获取修复的预计时间表
  • 2019年9月12日:EA回复称将在一周内提供测试版供我测试,并且正在着手解决Mac客户端的问题
  • 2019年9月25日:EA提供测试版链接,附带对修复背后设计决策及后续步骤的详细说明(最终发布到测试通道)。同时提供了供我审阅的安全公告草案。
  • 2019年9月26日:回复EA,确认收到测试版并对公告草案表示认可
  • 2019年9月26日:向EA发送关于测试版的几点说明,修复看起来是充分的
  • 2019年10月28日:联系EA询问发布预计时间
  • 2019年10月28日:EA回复称已向Origin团队请求更新,并将在可能时提供更新。指出他们正在完成Mac版本的重新编写。
  • 2019年11月13日:联系EA询问状态更新
  • 2019年11月13日:EA回复了新版本进入公共测试通道的日期。提供了新更新的Windows版本供我查看
  • 2019年11月14日:回复EA,指出开启受限模式后测试版看起来良好
  • 2019年12月9日:EA告知我他们计划在10日向公众发布Origin更新并发布安全公告
  • 2019年12月10日:安全公告发布,问题公开。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计