Overwolf 1-Click 远程代码执行 - CVE-2021-33501
字数 1616 2025-08-05 08:17:46

Overwolf 1-Click 远程代码执行漏洞分析(CVE-2021-33501)

漏洞概述

漏洞类型: 反射型XSS结合CEF沙箱逃逸导致的远程代码执行(RCE)
CVE编号: CVE-2021-33501
CVSS评分: 9.6 (Critical)
影响版本: Overwolf Client 0.169.0.22及更早版本
漏洞发现者: Joel Noguera (SwordBytes)
披露日期: 2021-05-31

技术背景

Overwolf平台简介

Overwolf是一个为游戏开发者创建游戏扩展的平台,功能包括:

  • 提供游戏内服务(如浏览器、IM客户端)
  • 特定游戏功能(如游戏事件提醒)
  • 通过Overwolf App Store分发扩展

相关技术组件

  1. 自定义URL协议处理程序: Overwolf注册了overwolfstore://协议
  2. Chromium Embedded Framework (CEF): Overwolf客户端使用的浏览器引擎
  3. Overwolf JavaScript API: 提供系统访问功能的API接口

漏洞细节

漏洞链组成

  1. 反射型XSS漏洞

    • 存在于overwolfstore:// URL处理程序中
    • 通过CATEGORY参数未过滤的用户输入注入
  2. CEF沙箱逃逸

    • 利用Overwolf JavaScript API中的危险函数
    • 结合XSS实现系统命令执行

漏洞利用流程

  1. 攻击者构造恶意URL:overwolfstore://app/apps/<XSS_PAYLOAD>
  2. 受害者点击URL触发Overwolf客户端处理
  3. 恶意脚本通过反射型XSS在CEF上下文中执行
  4. 脚本利用Overwolf API写入并执行批处理文件
  5. 实现任意命令执行

技术分析

URL处理机制

Overwolf客户端注册了overwolfstore://协议,URL结构为:

overwolfstore://app/<SECTION>/<CATEGORY>/<EXTRAS>

关键解析代码(位于window.js):

_this.decodeUrlSchemeParams = function(info) {
    const decodedUrl = decodeURIComponent(info.parameter);
    const url = new URL(decodedUrl);
    const urlParts = url.pathname.split('/');
    const params = { origin: info.origin };
    
    if (urlParts[2] !== 'app') { return null; }
    if (urlParts[3]) { params.section = urlParts[3]; }
    if (urlParts[4]) { params.category = urlParts[4]; }
    if (urlParts[5]) { params.extra = { id: urlParts[5] }; }
    
    return params;
}

XSS注入点

SECTION为"apps"时,CATEGORY值会被反射到错误消息中:

  • 后端返回Content-Type: text/html
  • 响应直接嵌入DOM,导致XSS

示例Payload:

overwolfstore://app/apps//4

CEF沙箱逃逸技术

利用两个Overwolf API函数实现RCE:

  1. overwolf.io.writeFileContents

    • 功能: 写入文件到系统
    • 参数: 路径、内容、回调等
    • 需要FileSystem权限(默认已分配)
  2. overwolf.utils.openUrlInDefaultBrowser

    • 功能: 使用默认程序打开URL/文件
    • 特性: 可执行本地程序(如calc.exe)

完整利用链

  1. 通过XSS执行恶意JavaScript
  2. 使用writeFileContents创建批处理文件
  3. 使用openUrlInDefaultBrowser执行批处理文件

最终PoC:

overwolfstore://app/apps//CCCCCC

编码说明:

  • %252f = 双重编码的/
  • %2526 = 双重编码的&
  • 用于绕过解析限制

修复建议

  1. 对URL参数进行严格过滤和编码
  2. 限制Overwolf API的敏感功能
  3. 加强CEF沙箱隔离
  4. 实施内容安全策略(CSP)

时间线

  • 2021-05-04: 漏洞研究开始
  • 2021-05-06: 开发PoC
  • 2021-05-10: 首次报告给Overwolf
  • 2021-05-18: 漏洞确认
  • 2021-05-21: CVE分配
  • 2021-05-27: 补丁发布
  • 2021-05-31: 公开披露

总结

CVE-2021-33501展示了如何通过结合反射型XSS和应用程序特定的API滥用实现远程代码执行。此漏洞强调了以下安全原则的重要性:

  1. 对所有用户输入进行严格过滤
  2. 谨慎设计具有系统访问权限的API
  3. 确保客户端应用程序沙箱的有效性
  4. 实施纵深防御策略
Overwolf 1-Click 远程代码执行漏洞分析(CVE-2021-33501) 漏洞概述 漏洞类型 : 反射型XSS结合CEF沙箱逃逸导致的远程代码执行(RCE) CVE编号 : CVE-2021-33501 CVSS评分 : 9.6 (Critical) 影响版本 : Overwolf Client 0.169.0.22及更早版本 漏洞发现者 : Joel Noguera (SwordBytes) 披露日期 : 2021-05-31 技术背景 Overwolf平台简介 Overwolf是一个为游戏开发者创建游戏扩展的平台,功能包括: 提供游戏内服务(如浏览器、IM客户端) 特定游戏功能(如游戏事件提醒) 通过Overwolf App Store分发扩展 相关技术组件 自定义URL协议处理程序 : Overwolf注册了 overwolfstore:// 协议 Chromium Embedded Framework (CEF) : Overwolf客户端使用的浏览器引擎 Overwolf JavaScript API : 提供系统访问功能的API接口 漏洞细节 漏洞链组成 反射型XSS漏洞 存在于 overwolfstore:// URL处理程序中 通过 CATEGORY 参数未过滤的用户输入注入 CEF沙箱逃逸 利用Overwolf JavaScript API中的危险函数 结合XSS实现系统命令执行 漏洞利用流程 攻击者构造恶意URL: overwolfstore://app/apps/<XSS_PAYLOAD> 受害者点击URL触发Overwolf客户端处理 恶意脚本通过反射型XSS在CEF上下文中执行 脚本利用Overwolf API写入并执行批处理文件 实现任意命令执行 技术分析 URL处理机制 Overwolf客户端注册了 overwolfstore:// 协议,URL结构为: 关键解析代码(位于 window.js ): XSS注入点 当 SECTION 为"apps"时, CATEGORY 值会被反射到错误消息中: 后端返回 Content-Type: text/html 响应直接嵌入DOM,导致XSS 示例Payload: CEF沙箱逃逸技术 利用两个Overwolf API函数实现RCE: overwolf.io.writeFileContents 功能: 写入文件到系统 参数: 路径、内容、回调等 需要 FileSystem 权限(默认已分配) overwolf.utils.openUrlInDefaultBrowser 功能: 使用默认程序打开URL/文件 特性: 可执行本地程序(如 calc.exe ) 完整利用链 通过XSS执行恶意JavaScript 使用 writeFileContents 创建批处理文件 使用 openUrlInDefaultBrowser 执行批处理文件 最终PoC: 编码说明 : %252f = 双重编码的 / %2526 = 双重编码的 & 用于绕过解析限制 修复建议 对URL参数进行严格过滤和编码 限制Overwolf API的敏感功能 加强CEF沙箱隔离 实施内容安全策略(CSP) 时间线 2021-05-04: 漏洞研究开始 2021-05-06: 开发PoC 2021-05-10: 首次报告给Overwolf 2021-05-18: 漏洞确认 2021-05-21: CVE分配 2021-05-27: 补丁发布 2021-05-31: 公开披露 总结 CVE-2021-33501展示了如何通过结合反射型XSS和应用程序特定的API滥用实现远程代码执行。此漏洞强调了以下安全原则的重要性: 对所有用户输入进行严格过滤 谨慎设计具有系统访问权限的API 确保客户端应用程序沙箱的有效性 实施纵深防御策略