挖洞经验 | 从存储型XSS到RCE的Steam客户端漏洞
字数 1332 2025-08-18 11:37:53

Steam客户端漏洞分析:从存储型XSS到RCE攻击

1. 漏洞概述

本教学文档详细分析Steam客户端中一个高危漏洞链,该漏洞允许攻击者从存储型XSS(跨站脚本攻击)升级到RCE(远程代码执行),最终获得$7500美金的漏洞赏金。

2. 环境背景

2.1 Steam平台介绍

  • Valve公司开发的数字游戏社交平台
  • 提供游戏购买、下载、讨论和分享功能
  • 包含客户端和网页版聊天系统(https://steamcommunity.com/chat)

2.2 技术架构

  • 基于React框架开发
  • 使用BBcode格式处理聊天消息
  • 部署了内容安全策略(CSP),但包含'unsafe-inline'策略

3. 漏洞发现

3.1 发现者

  • Thomas Shadwell(英国国家网络安全中心安全工程师)
  • 福布斯2018年"欧洲30名30岁以下优秀工程师"获得者

3.2 使用工具

  • Chrome DevTool工具
  • XSS Payload
  • oEmbed格式分析

4. 漏洞分析

4.1 XSS漏洞根源

  • Steam聊天客户端处理BBcode格式消息时存在缺陷
  • 特别是[url=xxx]标签未进行安全过滤
  • 允许嵌入任意链接,包括javascript: URI

4.2 漏洞利用点

  1. BBcode标签漏洞

    • [url=xxx][code][image]标签存在风险
    • React的XSS防护无法缓解[url=xxx]下的javascript: URI攻击
  2. CSP策略缺陷

    • 使用了'unsafe-inline'策略
    • 允许内联<script>元素、javascript: URL、内联事件处理函数等

4.3 攻击场景

  1. 攻击者构造恶意链接
  2. 在Steam聊天群组中传播
  3. 受害者点击链接触发漏洞

5. 漏洞升级:从XSS到RCE

5.1 RCE利用方法

  • 使用steam://openexternalforpid/10400/file:///C:/Windows/cmd.exe协议
  • 构造执行指令:[url=steam://openexternalforpid/10400/file:///C:/Windows/cmd.exe]click me[/url]

5.2 攻击危害

  1. 窃取玩家敏感信息
  2. 进行网络钓鱼攻击
  3. 传播勒索软件
  4. 系统破坏和控制

6. 漏洞修复建议

6.1 代码层面

  • 移除'unsafe-inline' CSP策略
  • 对BBcode标签进行严格过滤,特别是[url=xxx]
  • 禁用危险的URI协议(如javascript:steam://

6.2 架构层面

  • 重新评估"丰富聊天内容"功能的安全性
  • 对客户端和网页版进行统一的安全审计

7. 防御措施

7.1 开发者防御

  • 实施严格的输入验证和输出编码
  • 使用更安全的CSP策略
  • 定期进行安全审计

7.2 用户防御

  • 不点击不明链接
  • 保持客户端更新
  • 使用安全软件防护

8. 总结

该漏洞链展示了现代应用程序中常见的安全问题:

  1. 过度依赖框架安全机制
  2. 不安全的内容策略配置
  3. 功能丰富性与安全性的平衡问题

通过此案例,开发者应更加重视客户端安全设计,特别是当应用程序处理用户生成内容时。

Steam客户端漏洞分析:从存储型XSS到RCE攻击 1. 漏洞概述 本教学文档详细分析Steam客户端中一个高危漏洞链,该漏洞允许攻击者从存储型XSS(跨站脚本攻击)升级到RCE(远程代码执行),最终获得$7500美金的漏洞赏金。 2. 环境背景 2.1 Steam平台介绍 Valve公司开发的数字游戏社交平台 提供游戏购买、下载、讨论和分享功能 包含客户端和网页版聊天系统(https://steamcommunity.com/chat) 2.2 技术架构 基于React框架开发 使用BBcode格式处理聊天消息 部署了内容安全策略(CSP),但包含 'unsafe-inline' 策略 3. 漏洞发现 3.1 发现者 Thomas Shadwell(英国国家网络安全中心安全工程师) 福布斯2018年"欧洲30名30岁以下优秀工程师"获得者 3.2 使用工具 Chrome DevTool工具 XSS Payload oEmbed格式分析 4. 漏洞分析 4.1 XSS漏洞根源 Steam聊天客户端处理BBcode格式消息时存在缺陷 特别是 [url=xxx] 标签未进行安全过滤 允许嵌入任意链接,包括 javascript: URI 4.2 漏洞利用点 BBcode标签漏洞 : [url=xxx] 、 [code] 和 [image] 标签存在风险 React的XSS防护无法缓解 [url=xxx] 下的javascript: URI攻击 CSP策略缺陷 : 使用了 'unsafe-inline' 策略 允许内联 <script> 元素、javascript: URL、内联事件处理函数等 4.3 攻击场景 攻击者构造恶意链接 在Steam聊天群组中传播 受害者点击链接触发漏洞 5. 漏洞升级:从XSS到RCE 5.1 RCE利用方法 使用 steam://openexternalforpid/10400/file:///C:/Windows/cmd.exe 协议 构造执行指令: [url=steam://openexternalforpid/10400/file:///C:/Windows/cmd.exe]click me[/url] 5.2 攻击危害 窃取玩家敏感信息 进行网络钓鱼攻击 传播勒索软件 系统破坏和控制 6. 漏洞修复建议 6.1 代码层面 移除 'unsafe-inline' CSP策略 对BBcode标签进行严格过滤,特别是 [url=xxx] 禁用危险的URI协议(如 javascript: 和 steam:// ) 6.2 架构层面 重新评估"丰富聊天内容"功能的安全性 对客户端和网页版进行统一的安全审计 7. 防御措施 7.1 开发者防御 实施严格的输入验证和输出编码 使用更安全的CSP策略 定期进行安全审计 7.2 用户防御 不点击不明链接 保持客户端更新 使用安全软件防护 8. 总结 该漏洞链展示了现代应用程序中常见的安全问题: 过度依赖框架安全机制 不安全的内容策略配置 功能丰富性与安全性的平衡问题 通过此案例,开发者应更加重视客户端安全设计,特别是当应用程序处理用户生成内容时。