发布于:2021-01-24 00:00:37
0
309
0
维护是一项费力不讨好的任务,但它是保持互联网运行的必要条件。东北大学的研究人员发现了JavaScript库中令人震惊的漏洞,使你的代码对恶意软件开放。
保养并不性感。创造一些新的东西总是比维护遗留代码更酷。但这是一项费力不讨好却又必要的任务。东北大学(Northeastern)最近的一篇论文指出,缺乏维护可能是一种比你想象的更严重的安全缺陷。
每个人都经历过一次不可原谅的系统崩溃。它会彻底摧毁一切,就像你的作品从未存在过一样。这是一种普遍的体验,几乎是陈词滥调了。尽管我们意识到自己的弱点,但仍然有这样一种想法,即互联网本身将永远存在。(不过,最近的网络中断可能会让这种想法偃息息散。)
网络的复杂性是不可想象的,但它远没有我们愿意承认的那么稳定。它不断地被新奇的事物冲刷,而且它都是建在沙子上的。互联网不是图书馆。互联网不是一个资源库。用互联网档案馆的档案管理员和历史学家杰森·斯科特(Jason Scott)的话来说,“当它消失时,它真的消失了。”
亚历山德拉图书馆是古代世界的奇迹,也是哲学家和古代科学家分享信息和研究的中心。盖伦写道,所有停靠在港口的船只都必须把它们的书交给抄写员抄写;原始卷轴留在图书馆,副本被分发给原始所有者。它收藏了世界上最大的关于哲学、文学、技术、数学和医学的卷轴。当它燃烧时,它就消失了。残片至今仍存在,零星的手稿到处都是。
如果网络连通,我们甚至连碎片都没有了。
建立在沙子上的JavaScript库
网站就像弗兰肯斯坦的怪物,由数据库后端、内容生成引擎、多种脚本语言和客户端代码等组成。保护和维护它们是一场噩梦,即使只是因为要覆盖的空间太大。
一个特定的漏洞存在于客户端JavaScript中。美国西北大学的研究人员发现,超过三分之一的网站至少使用了带有已知漏洞的JavaScript库版本。近10%的人使用两个或更多易受攻击的库。
“现代网站经常包含流行的第三方JavaScript库,因此有可能继承这些库中的漏洞,”Tobias Lauinger写道。所谓易受攻击,它们指的是跨站点脚本(XSS),它允许某人将恶意代码插入网站。“如果一个JavaScript库接受了用户的输入,但没有验证它,XSS漏洞就可能潜入,所有使用这个库的网站都可能受到攻击。”
基于2016年5月Alexa排名前75k的爬行,Lauinger等人发现了一些令人震惊的事实。绝大多数的Alexa网站使用至少一个著名的JavaScript库,其中最流行的是jQuery。
他们的研究发现,“从每个库的角度来看,至少36.7%的jQuery、40.1%的Angular、86.6%的把手和87.3%的YUI包含使用了一个易受攻击的版本。”更令人担忧的是,许多网站仍然依赖JavaScript库,而这些库已经不再被维护,比如YUI和SWFObject。
旧的库,旧的代码
更令人担忧的是对陈旧JavaScript库版本的依赖,因为许多服务器可能缺乏可靠的更新。在ALEXA中,每个网站使用的最古老的图书馆版本与该图书馆最新可用版本之间的平均滞后时间为1177天,在COM中为1476天。一些仍在积极使用的图书馆已于数年前停止发展。我并不是说旧版本不好,但是,你真的应该依赖至少3或4年的库依赖吗?
这里有一些好消息;流行网站的漏洞最少。但是五分之一的人仍然很脆弱,这表明这个问题很普遍。
根据研究人员的说法,最令人警醒的发现是“实际证据表明JavaScript库生态系统是复杂的、无组织的、在安全性方面相当“特别”的。”缺乏可靠的漏洞数据库、安全邮件列表、发布说明中有关安全问题的更新,意味着“很难确定一个库的哪个版本受到特定的、报告的漏洞的影响”。
那么,你最近更新了你的JavaScript库吗?如果我是你,我会再三确认的。
作者介绍