npm audit 报了高危漏洞,但补丁版本还没发,怎么办? 技术莉莉 提问于 2026-02-24 12:41:19 阅读 65 安全 项目里用的 lodash 被 npm audit 标成高危漏洞,说是原型污染问题。可我查了官方仓库,最新版还是 4.17.21,根本没发安全补丁。 我已经试过手动升级到最新版,也清了缓存重装,但漏洞还在。现在 CI 流水线卡住了,总不能一直忽略吧?有没有临时绕过或者替代方案? 依赖安全安全补丁 我来解答 赞 4 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 极客富水 Lv1 lodash 4.17.21 的原型污染漏洞(CVE-2021-23337)确实是个老问题了,官方维护状态堪忧,这么久了还没发补丁。既然 CI 卡住了,给你几个实际能用的方案。 最直接的办法是用 npm 的 overrides 强制锁定依赖版本。如果你用的是 npm 8.3 以上版本,在 package.json 里加一段配置: { "overrides": { "lodash": "$lodash" } } 这样会把你项目里的 lodash 强制指向你当前安装的版本。不过说实话,这招对原型污染漏洞没啥用,因为 4.17.21 本身就是有问题的版本。 更实际的方案是换用 lodash-es,它是 ES modules 版本,维护状态比 lodash 好一些,而且支持 tree-shaking。性能上还能减少打包体积,算是个意外收获。改起来也简单: import _ from 'lodash-es'; // 或者按需引入 import debounce from 'lodash-es/debounce'; 如果你的 lodash 是间接依赖(被其他包引用),那就麻烦点。可以用 patch-package 自己打个补丁,或者看看能不能把引用它的包也换掉。 最后实在没办法,就在 .npmrc 里暂时忽略这个漏洞: ignore-scripts=true audit=false 或者用 npm audit fix --force 碰碰运气,但这个容易把依赖树搞乱,慎用。 说句实在话,lodash 这个库太老了,很多方法原生 JS 已经能替代。像 debounce、throttle 这些自己写个实现也就几行代码,性能上还更可控。长期来看,逐步迁移掉 lodash 才是正道。 回复 点赞 1 2026-03-02 09:11 爱棋(打工版) Lv1 lodash 4.17.21 确实还没修这个原型污染漏洞(CVE-2021-23337),但 npm audit 报的是误报——这个漏洞需要特定调用方式(比如 _.set 传入用户可控的 path),正常用 _.merge 或普通属性访问不会触发。 如果 CI 硬要卡住,临时加个 .npmrc 文件里写 audit=false 先绕过,或者用 npm audit --audit-level=moderate 忽略 high 级别。 改成这样: echo "audit=false" > .npmrc 或者 CI 里直接跑: npm ci --audit=false 等 lodash 官方发 4.17.22(或者你 fork 个 lodash 打 patch 自己发私有 npm)。 回复 点赞 3 2026-02-24 13:02 加载更多 相关推荐 2 回答 128 浏览 npm audit 报了高危漏洞,但我不想升级依赖怎么办? 我跑 npm audit 发现有个依赖有高危漏洞,但项目里用的是老版本,升级会破坏现有功能。有没有办法忽略这个漏洞或者临时绕过? 试过加 --omit=dev 也没用,还是报同样的问题。现在 CI 流... W″巧丽 安全 2026-03-14 07:12:21 1 回答 24 浏览 npm audit 报高危漏洞但没法自动修复怎么办? 我跑 npm audit 时提示有个高危依赖漏洞,但执行 npm audit fix 却说“无法自动修复”,手动升级又怕项目崩了,这该怎么处理? 试过加 --force 参数,结果一堆依赖冲突,本地开... IT人丹丹 安全 2026-03-27 17:47:18 1 回答 37 浏览 npm audit 报高危漏洞但没法升级依赖怎么办? 我跑 npm audit 发现有个高危漏洞,但提示的依赖是深层嵌套的,自己项目里根本没直接装,手动升级也没用。 试过 npm update 和删 node_modules 重装,还是报一样的问题。有没... IT人志丹 安全 2026-03-06 13:52:16 2 回答 54 浏览 npm audit 报高危漏洞,但升级依赖后项目就报错怎么办? 我用 npm audit 扫描项目,发现 lodash 有个高危漏洞,提示要升级到 4.17.21 以上。可我升级完之后,页面直接白屏,控制台报错说某个方法 undefined。 之前用的是 4.17... 诸葛彤彤 安全 2026-03-04 21:09:20 2 回答 75 浏览 pnpm audit 报告高危漏洞但不知道怎么修复怎么办? 我用 pnpm 管理项目依赖,今天运行 pnpm audit 时发现好几个高危漏洞,但提示信息太模糊了,根本不知道该升级哪个包或者怎么处理。 比如它说某个间接依赖有原型污染问题,但我查了 packag... UE丶米阳 安全 2026-03-03 19:48:20 2 回答 118 浏览 npm audit显示高危漏洞但修复后依然存在怎么办? 我在开发一个Vue项目时,用npm audit发现有个高危漏洞(no-ssri@4.0.0),提示影响构建流程。试过运行npm audit fix和手动升级相关包,但漏洞还是没消失。项目用的是Vue ... 照南(打工版) 安全 2026-01-28 21:21:35 1 回答 31 浏览 npm audit 报高危漏洞,但我不确定要不要升级依赖? 我刚跑完 npm audit,提示有个高危漏洞在 lodash 里,建议升级到 4.17.21。但我项目里用的是 4.17.20,而且目前功能都正常。有点纠结要不要升,怕升级后和其他依赖冲突。之前试过... ♫开心 安全 2026-03-30 03:48:18 2 回答 25 浏览 pnpm audit 报告高危漏洞,但不知道怎么修复? 我用 pnpm 管理项目依赖,今天运行 pnpm audit 时提示有个高危漏洞,说是 axios 版本太低。但我明明在 package.json 里写的是 "axios": "^1.6.0",也重新... 长孙美菊 安全 2026-03-01 15:14:19 1 回答 45 浏览 npm audit 修复后为什么还有高危漏洞? 我刚跑完 npm audit fix,结果提示“fixed 5 of 12 vulnerabilities”,但剩下的 7 个还是高危。我查了下,有些是间接依赖,比如通过某个 UI 库引入的旧版 lo... Mr-子怡 安全 2026-03-15 17:12:22 2 回答 140 浏览 项目里 npm audit 报了 CVE 漏洞,但我不确定要不要升级依赖? 我跑 npm audit 时发现有个中危的 CVE(CVE-2023-XXXXX),影响的是一个间接依赖 lodash,但我的代码里根本没直接用它。升级主依赖可能会破坏现有功能,这到底该不该处理? 这... 南宫苗苗 安全 2026-02-24 00:47:20
最直接的办法是用 npm 的 overrides 强制锁定依赖版本。如果你用的是 npm 8.3 以上版本,在 package.json 里加一段配置:
这样会把你项目里的 lodash 强制指向你当前安装的版本。不过说实话,这招对原型污染漏洞没啥用,因为 4.17.21 本身就是有问题的版本。
更实际的方案是换用 lodash-es,它是 ES modules 版本,维护状态比 lodash 好一些,而且支持 tree-shaking。性能上还能减少打包体积,算是个意外收获。改起来也简单:
如果你的 lodash 是间接依赖(被其他包引用),那就麻烦点。可以用 patch-package 自己打个补丁,或者看看能不能把引用它的包也换掉。
最后实在没办法,就在 .npmrc 里暂时忽略这个漏洞:
或者用 npm audit fix --force 碰碰运气,但这个容易把依赖树搞乱,慎用。
说句实在话,lodash 这个库太老了,很多方法原生 JS 已经能替代。像 debounce、throttle 这些自己写个实现也就几行代码,性能上还更可控。长期来看,逐步迁移掉 lodash 才是正道。
_.set传入用户可控的 path),正常用_.merge或普通属性访问不会触发。如果 CI 硬要卡住,临时加个
.npmrc文件里写audit=false先绕过,或者用npm audit --audit-level=moderate忽略 high 级别。改成这样:
或者 CI 里直接跑:
等 lodash 官方发 4.17.22(或者你 fork 个 lodash 打 patch 自己发私有 npm)。