37%的网站都在使用含有漏洞的JavaScript库 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

37%的网站都在使用含有漏洞的JavaScript库

xiaohui 数据库安全 2017-03-14 09:50:12
4653429
收藏

导语:随着客户端Web应用的日益增多,越来越多的逻辑已经开始从服务器端转移至客户端,这些逻辑通常都是使用JavaScript语言所编写。

1489223932664121.png

随着客户端Web应用的日益增多,越来越多的逻辑已经开始从服务器端转移至客户端,这些逻辑通常都是使用JavaScript语言所编写。但遗憾的是,目前开发人员普遍不太关注JavaScript代码的安全性。

在本文中,我们就对客户端所使用的JavaScript库进行了全面的研究,并详细说明由JavaScript库漏洞而产生的Web安全隐患。

于是我们使用Bower和Wappalyzer的热门统计数据,手动构建了72个最流行的开源库的所有发行版本的漏洞资料库。之所以这样采取样本,就是为了能够比较各类网站的JavaScript的使用情况。

然后对Alexa排行榜上的前7.5万个网站以及随机选取的另外7.5万个.com网站进行扫描,以检查这15万个网站是否安装了这72个有漏洞的JavaScript库。结果发现有37%的网站至少包括一个具有已知漏洞的JavaScript库,并且有的漏洞的补丁已经好几年没有修复了;有10%的网站使用了2个以上含有漏洞的JavaScript库。而在Alexa排行榜上的前7.5万个网站所使用的JavaScript库,有87.3%的YUI3、86.6%的Handlebars、40.1%的Angular、36.7%的jQuery,以及33.7%的jQ-UI都使用的是有漏洞的版本。

1489223955267320.jpeg

其实根据我们的估计,37%这个比例可能还是被低估了,因为我们只选择了72个JavaScript库。

由于开发人员经常重新格式化,重组或附加代码,使我们其难以检测到JavaScript库在野外使用的情况,所以我们使用静态和动态分析技术来进行分析,以便在实现Web应用中的跟踪。

通过这种特定的分析,我们发现了JavaScript库所存在的普遍性问题。下面以一些使用jQuery框架的JavaScript 库为例 。

第一种情况,在ALEXA的排行榜上大约有20.7%的网站使用包括jQuery(17.2%在COM)在内的多个框架,比如Prototype,MooTools。而在.com网站中这个比例是17.2%。

第二种情况,在ALEXA的排行榜上大约有5.7%的网站,在同一个JavaScript库中使用多个版本的jQuery框架的相同文档。

第三种情况,在ALEXA的排行榜上大约有4.2%的网站,会在同一JavaScript库中多次使用同一个版本的jQuery框架的相同文档,而在.com网站中这个比例是5.1%。

jQuery依然是迄今为止最流行的库, ALEXA排行榜上84.5%的网站都用到了jQuery。另外尽管SWFObject在2013年已经被停用,但ALEXA排行榜上仍然在10.7%的网站在使用SWFObject(Adobe Flash)。

4.jpeg

当从外部加载时,脚本大多从CDN加载:

5.jpeg

总的来说,在内部托管和CDN提供的脚本库之间似乎有一个很好的分隔:

6.jpeg

虽然目前各个JavaScript库已经更新过很多次了,但不知为什么仍有不少网站继续使用含有漏洞的JavaScript库。

JavaScript库的漏洞分布

虽然在ALEXA排行榜排名较高的网站往往不太可能加载有漏洞的JavaScript库,但则不意味着它们所加载的JavaScript库就一定没有漏洞,很可能只是它们没有发现而已。然后顺着ALEXA排行榜往后,排名越低,漏洞越多,如下图所示。

1489224353251434.png

37.4%的COM网站至少使用一个易受攻击的JavaScript库。其中,金融和政府网站所使用的漏洞是最多的,52%地金融和50%的政府网站都在使用有漏洞的JavaScript库。

另一个有趣的分析就是大多数网站使用的这些有漏洞的JavaScript库都是很久以前发布的版本了,这表明开发人员很少更新他们网站的JavaScript库。但是根据我们的分析,其中有61.7%的ALEXA排行榜上的网站所使用的JavaScript库至少有一个补丁版本。

我们猜想可能问题出在了漏洞分散性这个问题上,在我们手动构建那72个最流行的开源库的漏洞资料库时,我们发现,没有JavaScript库漏洞的集中数据库,于是我们只能手动来编译来自开源漏洞数据库(OSVDB),国家漏洞数据库(NVD),公开漏洞跟踪,GitHub评论,博客文章和Retire.js检测到的相关漏洞信息。总的来说,我们经过努力,在我们的漏洞资料库中获得11个JavaScript库的漏洞详细信息。

1489224369537787.png

所以对于网站开发人员而言,他们必須先知道网站使用了哪些JavaScript库,才能进行更有针对性的维护。

为了解决这个问题,我们进行了因果树漏洞分析。

因果树漏洞分析

为了弄清楚到底是哪个JavaScript库被加载,我们开发了一个chrome的因果树扩展,因为在漏洞调查时运用因果树时, 能列出程序的主要步骤, 并叙述出与这些步骤相关联的要点,树中的节点是特定时间点DOM中元素的快照,表示加载JavaScript库之间的关系。例如:

123.png

1489224393397443.png

ALEXA中的中间因果树包含133个节点,中值深度为4个包含。此外,我们还发现,绝大多数的JavaScript库都未建立专用的安全通知的邮件列表(Mailing List),也多缺乏详细的漏洞报告,还有就是快速更新的JavaScript库也让开发人员疲于更新。

因此我们总结造成客户端Web应用有如此多的JavaScript漏洞,最根本原因就是JavaScript的生态系统太复杂。没有可靠的漏洞数据库,没有由库供应商维护的安全邮件列表,发行说明中也很少或没有关于安全问题的细节,这样我们通常就很难确定哪些JavaScript库受到了哪些漏洞的影响。

2
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务