安全厂商Snyk发布最新2019年的JavaScript框架安全性报告,Snyk主要调查了Angular以及React生态系统中的安全漏洞和风险,同时也连带分析了Vue.js、Bootstrap和jQuery,发现许多下载次数高达百万次的热门模块都存在漏洞,最常见的问题就是跨站脚本漏洞(XSS)。
Snyk调查Angular和React项目,在较旧版本AngularJS项目中,发现了23个安全性漏洞,但是在Angular框架核心组件没有任何漏洞存在,而React核心则存在数个漏洞,Snyk提到,在React的核心函数库发现漏洞似乎不少见。值得注意的是,只有一个React核心项目漏洞,被指定官方CVE编号,而Angular则都没有,Snyk认为,这证明了需要有一个漏洞数据库记录开源社群的活动,以便发现相关的安全问题。
而Snyk在React和Angular模块生态系统中受欢迎的前几名组件,都发现了安全性漏洞,而且这些组件的总下载次数高达了数百万次,部分组件至今甚至尚无安全补丁,(下表)包含了Angular或React样板的漏洞,也就是说,开发者的应用程序因为引用了这些组件,因此在未做任何事之前就存在漏洞,而且都有未修补的漏洞。Angular的相依项目有952个,总共有2个漏洞,React则有1,257个相依项目,存在3个漏洞,还有一个为潜在的授权兼容问题。
Angular的热门模块ngx-bootstrap被下载6,275,854次,却存在一个中度等级的跨站脚本攻击漏洞,至今没有修补程序,而第4热门的模块ng-dialog,存在了一个未修补的DoS攻击漏洞,也有580,674下载次数,第8名的angular-froala,有一个未修复的跨站脚本攻击。总结来说,从模块的下载次数来看漏洞分布,有92%都是跨站脚本攻击,其他的8%则是DoS攻击以及访问限制旁路漏洞。
在React生态系统中,模块同样面临严重的跨站脚本漏洞问题,Snyk提到,react-marked-markdown模块有一个严重的跨站脚本问题,至今没有安全补丁,但是却被各JavaScript标记式函数库引用,在过去12个月有65,790的下载次数。还有preactrender-to-string函数库所有3.7.2之前的版本,都受跨站脚本漏洞影响,但是这个函数库在过去12个月有高达3,228,049次的下载。
当用户的应用程序使用到操作SVG格式的函数库react-svg,则有很大的机会存在严重的跨站脚本漏洞,2.2.18版本之前都受影响,在过去12个月这个模块被下载了1,446,442次。另外,今年三月mui-datatables被发现一个CSV注入漏洞,这个函数库提供基于Material UI框架的表帧数据UI组件,在过去12个月下载量超过350,000。
其他前端框架的安全性问题,Vue.js的模块bootstrap-vue函数库在2019年1月,被发现了一个严重的跨站脚本漏洞,在此之前的所有版本皆受影响。Snyk研究团队也关注了Bootstrap框架模块,发现了7个严重的跨站脚本漏洞,受影响的模块包含bootstrap-markdown、bootstrap-vuejs和bootstrap-select等。
jQuery发展较早,无论jQuery 1、jQuery 2或jQuery 3各版本都存在数个漏洞,分别有跨站脚本、类型污染以及DoS等漏洞,Snyk提到,只要不是使用jQuery 3.4.0之后的版本,皆为有漏洞的版本。jQuery的热门模块也存在许多漏洞,像是jquery-mobile、jquery-fileupload以及jquery-colorbox函数库,存在跨站脚本或是任意程序代码执行漏洞,而且未有任何修补程序,但在过去12个月总共被下载超过34万次。