首页 > 编程语言 >Vue 项目安全扫描漏洞,JS 库版本太低,要求升级 YUI(vue2 升级javascript库)【检测到目标站点存在javascript框架库漏洞漏洞风险:中】

Vue 项目安全扫描漏洞,JS 库版本太低,要求升级 YUI(vue2 升级javascript库)【检测到目标站点存在javascript框架库漏洞漏洞风险:中】

时间:2023-04-23 16:44:31浏览次数:45  
标签:注释 YUI javascript 升级 漏洞 2.9 版本 jsencrypt

原帖:https://blog.csdn.net/u012961419/article/details/130016341

背景
公司信安部门对项目进行安全扫描,查出一些漏洞,其中有一项要求升级 javascript 框架库(如图):

 

吓得我以为让我把 Vue2 升级成 Vue3。

经过一番询问后才知道,是工具包中依赖的 YUI 是存在安全漏洞的版本。

漏洞定位
信安同事一开始只给我上面的图,我根本不知道是哪个包的版本需要升级。

我只能用漏洞标题去百度,搜到了一些同样扫出漏洞的情况,多是在说下面几个工具:

jquery 我没用这个
js-cookie 文章说改存 localStorage(一点道理都没有)
jsencrypt 事实证明确实是这个,但没有具体说明原因
查到这里,同事也发来更详细的说明:

YUI:2.9.0 (Link) https://www.cvedetails.com/cve/CVE-2012-5883/

于是我就在打包后的代码中搜索 YUI(不区分大小写,不进行全字匹配),果然搜到了一段注释:

 

确认了这个事情,接下来就容易多了。这明显不是我的代码,那就在 node_modules 中继续搜索,最终在 jsencrypt 下查到了这段注释:

 

YUI2 的版本漏洞
在网上搜索关于 YUI 2.9.0 漏洞的信息:搜索结果

 

结果中也包含扫描工具提供的漏洞地址,该漏洞指出:

在 YUI 2.8.0 - 2.9.0 中的 Flash 组件基础机构中存在 XSS 漏洞,远程攻击者可以通过 SWF 程序(YUI SWF 提供了一种在网页中嵌入 Adobe Flash Player 的标准方法)注入任意 Web 脚本或 HTML。

现在我们知道 YUI 2.9.0 这个版本确实有安全隐患,BUG 我们真的有这个漏洞么 ?

YUI 在代码中的实际应用
官方介绍:YUI 是一个免费的、开源的 JavaScript 和 CSS 库,用于构建丰富的交互式 web 应用程序。

不太严谨的说,YUI 就是类似 jquery 的一个工具库。

然后看看 jsencrypt 为啥要使用它呢?

从 node_modules\jsencrypt\lib\lib\jsrsasign\yahoo.js 的代码看,整个文件到处的只是一个包含 lang.extend 方法的对象。

lang.extend 方法模拟类的继承方式,从一个对象上扩展出领域给对象。

也就是说 jsencrypt 仅仅使用了 YUI 的 lang.extend 方法,碰都没碰 YUI SWF。

这么看尽管代码用的是 2.9.0 版本的一部分,但是这个版本的安全漏洞根本影响不到项目。

解决办法
现在可以总结出:

漏洞的原因是 YUI 2.9.0 版本存在安全漏洞
安全软件扫描的依据是注释中包含 yui 的版本号
那其实只要解决掉 YUI 版本号的这块注释即可。

方法一:使用压缩后的文件
网上搜的办法大部分是使用压缩后(不含注释)的文件:node_modules\jsencrypt\bin\jsencrypt.min.js

// 旧的引入方式
import JSEncrypt from 'jsencrypt'
// 新的引入方式
import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'

方法二:优化打包配置,删除注释
我的办法是,在打包环节删除注释,全局 AOE 干掉所有注释,解决注释引发的所有问题。

包括安全扫描出的,包含外部平台链接、包含邮箱 URL(npm 作者邮箱)之类的。

我是用 Vue Cli 生成的 Vue2 版本的项目,默认打包配置中 webpack 使用了 terser (terser-webpack-plugin)进行代码优化,直接进行配置即可。

inspect 看下默认配置:

optimization: {
...
minimizer: [
{
options: {
test: /\.m?js(\?.*)?$/i,
chunkFilter: () => true,
warningsFilter: () => true,
extractComments: false,
sourceMap: false,
cache: true,
cacheKeys: defaultCacheKeys => defaultCacheKeys,
parallel: true,
include: undefined,
exclude: undefined,
minify: undefined,
terserOptions: {
output: {
// 默认保留了 @license 注释
comments: /^\**!|@preserve|@license|@cc_on/i
},
compress: {...},
mangle: {...}
}
}
}
]
},

只需要修改 output 配置即可,配置项参考:

TerserWebpackPlugin | webpack 中文文档
terser - npmjs.com 直接搜索 Format options
vue.config.js 增加配置:

chainWebpack(config) {
// 删除注释
config.optimization.minimizer('terser').tap(args => {
// 直接修改 terserOptions 下的属性值,保留原有配置
// 这里访问 terserOptions 的时候并没有 output,访问不到 output.comments 需要直接赋值
args[0].terserOptions.output = {
comments: false,
}
return args
})
}
————————————————
版权声明:本文为CSDN博主「皮蛋很白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012961419/article/details/130016341

标签:注释,YUI,javascript,升级,漏洞,2.9,版本,jsencrypt
From: https://www.cnblogs.com/zouhao/p/17346972.html

相关文章

  • Python常见的10个安全漏洞及修复方法
    关注我了解更多Python技术知识,带你一路“狂飙”到底!上岸大厂不是梦!编写安全的代码很困难,当你学习一门编程语言、一个模块或框架时,你会学习其使用方法。在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准库中,也存在着许多糟糕的实例。然而,许多Python开发人员......
  • JavaScript实现文件上传下载功能实例解析
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify......
  • abp(net core)+easyui+efcore实现仓储管理系统——组织管理升级之下(六十二)
    Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+eas......
  • 基于docker 安装的gitlab 升级
    gitlab升级背景现在的gitlab版本是13.0.1,目标是14.9.5因为,这个版本及以后支持禅道集成。升级过程先备份数据gitlab-rakegitlab:backup:create#有两个文件需要手工备份#gitlab.rb路径:/etc/gitlab/gitlab.rb#gitlab-secrets.json路径:/etc/gitlab/gitlab-secrets.js......
  • android OTA升级(VAB分区)
    androidOTA升级(VAB分区) 升级开始前,升级程序update_engine将要升级的slot标记为unsuccessful,调用boot_ctl的SetSlotAsUnbootable()hardware/interfaces/boot/1.1/default/boot_control/libboot_control.cpp316boolBootControl::SetSlotAsUnbootable(unsignedintslot){......
  • nginx解析漏洞
    Nginx漏洞复现与总结–FreeBuf网络安全行业门户1、文件解析漏洞描述:对于任意文件名,在后面添加/xxx.php后,即可作为php解析影响范围:该漏洞是nginx配置所导致,与版本无关。按照:phpStudy默认配置Nginx解析漏洞-漏洞复现/渗透测试/网络安全/信息安全/黑客技术-东塔网络安全学院_哔......
  • 【IT老齐001】单体架构升级问题
    【IT老齐001】单体架构升级问题不谈场景的架构设计都是耍流氓架构没有对不对,只有合不合适架构是宏观设计的标准框架是具体实现的规则架构是取舍的艺术场景举例系统面临大量文件读写影响服务器磁盘IO导致数据库查询高延迟初级解决方案Redis通过在内存中的高吞吐完......
  • Vulhub 漏洞学习之:Log4j
    Vulhub漏洞学习之:Log4j目录Vulhub漏洞学习之:Log4j1ApacheLog4jServer反序列化命令执行漏洞(CVE-2017-5645)1.1环境安装1.2漏洞利用过程1.3GetShell2ApacheLog4j2lookupJNDI注入漏洞(CVE-2021-44228)2.1环境安装2.2漏洞利用过程2.2.1工具准备2.2.2JNDI2.2.3漏洞验......
  • Vulhub 漏洞学习之:ThinkPHP
    Vulhub漏洞学习之:ThinkPHP目录Vulhub漏洞学习之:ThinkPHP0利用工具1ThinkPHP2.x任意代码执行漏洞1.1环境安装1.2漏洞利用过程1.3GetShell2ThinkPHP3.x2.1ThinkPHP3.x日志泄露漏洞2.1.1漏洞原理2.1.2漏洞利用过程3ThinkPHP55.0.20远程代码执行漏洞3.1环境安装3.......
  • Discourse Google Analytics 3 的升级提示
    根据Google官方的消息:GoogleAnalytics(分析)4是我们的新一代效果衡量解决方案,即将取代UniversalAnalytics。自2023年7月1日起,标准UniversalAnalytics媒体资源将停止处理新的命中数据。如果您仍在使用UniversalAnalytics,我们建议您为以后使用GoogleAnalytics(分析)4......