SCA扫描报了lodash高危漏洞,但我项目里根本没直接装它?

迷人的岳阳 阅读 13

最近CI里的SCA扫描突然报了个lodash的CVE-2023-45133高危漏洞,可我查了package.json压根没直接依赖lodash。是不是被某个依赖偷偷带进来的?该怎么定位和修复啊?

我试着用npm ls lodash找了一下,确实有几层嵌套依赖在用。但我不确定能不能直接升级,怕搞崩了。比如下面这个工具函数就用了get:

import get from 'lodash/get';

function getUserEmail(user) {
  return get(user, 'profile.contact.email', '');
}
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
Des.慧研
我之前也碰到过类似的情况。SCA扫描报的漏洞可能确实是从某个间接依赖引入的。你可以按照下面的步骤来定位和修复这个问题:

首先,用 npm ls lodash 来查看哪些包依赖了 lodash。这一步你已经做了,找到了几层嵌套的依赖关系。

然后,你可以尝试升级这些依赖包,看看能不能解决这个问题。可以先从顶层依赖开始,看看是否有新版本已经修复了这个漏洞。升级命令是 npm update

如果不想直接升级依赖,或者担心升级会带来其他问题,你可以考虑使用 npm override 来强制指定 lodash 的版本。在 package.json 中添加一个 overrides 字段,指定 lodash 的版本为你知道的安全版本,比如这样:
"overrides": {
"lodash": "4.17.21"
}

这样即使某些包依赖的是旧版本的 lodash,npm 也会安装你指定的安全版本。

最后,记得更新完依赖后重新跑一遍 SCA 扫描,确保漏洞已经被修复。

至于你提到的工具函数,如果升级 lodash 版本后没有 API 变化,应该可以直接替换掉。不过最好还是检查一下新版本的 changelog,确认一下有没有不兼容的地方。
点赞
2026-03-25 14:01