77% 的网站使用了至少有 1 个漏洞的 JavaScript 库

news/2024/11/14 22:53:22 标签: javascript, ui, 前端

本文作者: Tim Kadlec
编译:胡子大哈

翻译原文:http://huziketang.com/blog/posts/detail?postId=58df725ba58c240ae35bb8dc
英文连接:77% of sites use at least one vulnerable JavaScript library

转载请注明出处,保留原文链接以及作者信息

前几周有一篇文章介绍说有 37% 的网站使用了至少包含 1 个漏洞的 JavaScript 库。当我们写这个报告的时候,里面提到过,我们预计实际情况会比这个还要更糟。

实际上,要糟的多。

我们在 Alexa 上的 top 5000 网站上跑了测试,发现数字达到了惊人的 76.6%,76.6% 的网站使用了至少包含 1 个漏洞的库。如果你对于我们怎么做的实验比较好奇,那就继续往下看吧。

测试

为了做这个测试,我们抓了 Alexa 上 top 5000 的网站 URL。抓的过程中发现有很多网站已经访问不了了,采取的策略是依据排名继续往下抓,直到够了 5000 个 URL 为止。

每个 URL 都用 WebPageTest 跑一遍。WebPageTest 在 Chrome 中加载每个页面,并且执行一些 JavaScript 脚本来判断其使用的 JavaScript 库。

例如为了判断使用的 jQuery 版本,每个页面在加载完成以后都会执行下面代码:

    return jQuery && jQuery.fn && jQuery.fn.jquery

包含了检测是否有下面这些库:

  • jQuery

  • Handlebars

  • Mustache

  • React

  • Angular

  • Ember

  • jQueryUI

  • YI

  • Dojo

对于每个检测的版本,都和 Snyk 开源软件漏洞库进行对比,以此来看有多少库包含了已知漏洞。

结果不美丽

正如上面提到的,JavaScript 库的安全问题非常糟糕——并没有华丽的外衣掩藏它。5000 个网站中,有 3831 个(76.6%)使用了至少包含有 1 个漏洞的 JavaScript 库。

比例数字这么高,听起来有点吓人,不过正如原始报告中提的那样,实际情况可能更糟。我们测试了 9 个 JavaScript 库,而可用的 JavaScript 框架和库有成百上千个。所测试的 9 个库是这里面最流行的几个,所以比例数字上应该也不会有很大的跃动,也许和实际情况会有几个点的差异。

再次强调,这里只是针对客户端一侧,测试已知的第三方 JavaScript 库漏洞。不包含服务端一侧和自己编写的 JavaScript 服务。一些新的漏洞都会添加到我们的数据库中,有些可能还没有对外公开。

jQuery

jQuery 毫无疑问是我们测试的里面最流行的一个了,它的流行度是有据可查的,所有受测的 5000 个 URL 中,有 79% 的使用了 jQuery。

尽管 jQuery 并没有什么特别的,但是它这么流行也导致了它也成为众矢之的,研究它漏洞的比较多(有 5 个已知的漏洞,已经在最新版本中修复了)。

如结果所显示的,即便我们只检测 jQuery,也有 75.1% 的网站使用了有漏洞的版本。这很大程度上取决于产品中 jQuery 库使用了多少年。调研的产品中有 17.4% 的 jQuery 库使用超过了 5 年。这与我们上一份报告的结论很吻合:人们并不经常更新库。

最新没有发现漏洞的 jQuery 版本是 3.0.0 版本以上的。对于当前的 jQuery 用户而言,版本变更并不是那么简单的事情,因为升级很可能会引起 bug,需要系统的整体升级。所检测的 jQuery 在 1.x 版本的竟然达到了 79% 之高。虽然说 jQuery 3.0.0 才发布了 1 年左右,但是只有 3.6% 的网站使用了 3.x 版本,这一数字也确实太低了。

下周我们会对 jQuery 进行深入的分析,因为它实在是太流行了,也使得研究它会比较有趣。

jQuery UI

按流行度排的话,下一个就是 jQuery UI 了,受测 URL 中大概占 19.3%。同样地,大多数的 jQuery UI 用户在使用有漏洞的版本,尽管其已经可以进行升级了。受测网站中大概 91% 的 jQuery UI 库都有至少 1 个漏洞。

和 jQuery 一样,很大程度上因为人们不进行升级,有 21% 的网站使用同 1 个 jQuery UI 版本超过 5 年。

Handlebars

受测网站中,Handlebar 占到了 3.4%。 其中的 68% 使用了有漏洞的 Handlebars 版本。

和上面一样,使用新版本的反应滞后是这一现象的罪魁祸首。从数据上来看,Handlebars 新版本的使用还比较流行,Handlebars 的最新版本 4.0.6 我们没有检测,检测的是其前一个版本 4.0.5,可以占到总 Handlebars 使用量的 26.7%。

然而由于它的版本发布的特别缓慢(自从 2015 年 11 月以来只发布了两个小版本),这也导致了这些使用了 Handlebars 的网站,一个版本也用了两年了。整体上,超过 3 年的 Handlebars 版本占到了 40%。

React, Mustache, Angular, YUI and Dojo

React (1.7%), Mustache (1.6%), Angular (1.3%), YUI (0.7%) and Dojo (0.2%) 。受测网站中,这些框架使用的比较少,所以对他们每个个体的分析结论并不可靠。把它们作为整体来分析的话,有漏洞的情况也很普遍,有 56.3% 的版本都是有漏洞的。

我们得出的有用结论

不可否认,调研的结果并不好。我们本来的预计应该是乐观的,谁都不想看到有 77% 的网站都在用有漏洞的库。

需要说明的是,没有一个单一的解决方案可以解决这个问题。相反,需要的是将提高安全意识、使用更好的工具、一套简单可维护的 JavaScript 前端实现方法等相结合(前端包管理工具的使用远不像后端那样普遍)。而这也仅仅是个开始。

但是,正如我们前面所说的,对此依旧满怀信心。第三方 JavaScript 的安全问题是一个可解决的问题,只是比预想的需要更长的时间而已。

由于这份报告的数据敏感性,我们不准备公开原始数据(里面包含了网站列表和易受攻击的网站)。但是如果你网站主,欢迎联系我们查看你的网站是否在这份报告中,以及如果在的话是否在易受攻击列表中。如果你会使用 npm 包,可以使用 Snyk 测试你的网站,也能帮助你发现一些潜在的安全漏洞。

如果本文对你有帮助,欢迎关注我的专栏-前端大哈,定期发布高质量前端文章。


我最近正在写一本《React.js 小书》,对 React.js 感兴趣的童鞋,欢迎指点。


http://www.niftyadmin.cn/n/976023.html

相关文章

Linux下使进程在后台运行

怎么样使程序在后台执行 /// nohup ./nn > nn.log 2 > &1 & 方法有很多,这里主要列举两种。假如我们有程序pso.cpp,通过编译后产生可执行文件pso,我们要使pso在linux服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在…

expect脚本同步文件,构建文件分发系统,批量远程执行命令

expect脚本同步文件 自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -av root192.168.133.132:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect eof ex…

Vue Vue cli

Vue与Vue CLI的对比目录简单理解区别版本号对应版本查看目录 简单理解 Vue CLI Vue 一堆的js插件 区别 Vue CLI是一个基于Vue.jd进行快速开发的完整系统,是一个脚手架,通俗点说就是代码生成器,可以快速生成一套基于Vue完整的前端框架&a…

高德地图API获取地理信息

高德地图API 地理/逆地理编码地址 获取高德API-key 地理编码 API 服务地址,即输入地点名获取地理信息: https://restapi.amap.com/v3/geocode/geo?parameters 方法:GET 例如: https://restapi.amap.com/v3/geocode/geo?addre…

nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

2019独角兽企业重金招聘Python工程师标准>>> 一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodej…

Linux设备管理(一):kobject, kset, ktype分析

/************************************************************************************ 本文为个人学习记录,如有错误,欢迎指正。 本文参考资料: *        https://blog.csdn.net/yyplc/article/details/7465569 *       …

垃圾回收算法|GC标记-清除算法

本文是《垃圾回收的算法与实现》读书笔记什么是GC标记-清除算法(Mark Sweep GC) GC 标记-清除算法由标记阶段和清除阶段构成。在标记阶段会把所有的活动对象都做上标记,然后在清除阶段会把没有标记的对象,也就是非活动对象回收。 …

因为想做的事情太多,所以你要学会理财

一直以来,我们总是把理财这两个字挂在嘴边,虽然理财意识是每个追求良好经济回报的战略支撑,但不可浮于表面,俗话说千里之行始于足下。与其感慨路难行,不如马上出发。下面我们进入正题。 富裕是一件是很值得争取的事情&…