问题描述:
漏洞扫描nuxt工程lodash版本低于4.17.12
问题排查:
1.nuxt项目相关lodash版本正常
2.相关项目lodash版本正常——子应用项目,cms项目,via项目
3.查找相关npm包是否采用lodash源码方式引入
4.根据这两个提交找到lodash漏洞的修补代码
fix: prototype pollution in _.defaultsDeep by Kirill89 · Pull Request #4336 · lodash/lodash fix: prototype pollution in several npm packages by Kirill89 · Pull Request #4337 · lodash/lodash
5.全局搜索safeGet,发现element-ui中直接引入了lodash源码,var VERSION = '4.17.10';
6.在element-ui库issues中发现解决办法 element UI Utils still uses lodash 4.17.10 · Issue #22741 · ElemeFE/element
7.将element-ui替换成elementui-lts之后,发现此版本中的lodash-es 含有module.exports = require("lodash-es"),但nuxt工程不支持会导致白屏,于是将源码修改为module.exports = require("lodash"),并使用patch-package自动同步修改安装npm包
三种解决方案:
1.直接利用patch-package 升级lodash.js中的lodash源码版本
2.更新elementui-lts,普通项目这么做是好使的,但nuxt存在服务端渲染,还需结合patch-package修改源码
3.后续在查找文档过程中,发现还有其他排查方式与解决方式,排查方式更简单有效,解决方法不追求element版本,可以使用低版本2.15.8前端安全——最新:lodash原型漏洞从发现到修复全过程_lodash 最新-CSDN博客