如何修复 npm 审计修复问题?

Posted

技术标签:

【中文标题】如何修复 npm 审计修复问题?【英文标题】:How to fix npm audit fix issues? 【发布时间】:2019-01-12 22:29:44 【问题描述】:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=4.17.5                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ react-native-cached-image                                    │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ react-native-cached-image > lodash                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://npmjs.com/advisories/577                             │
└───────────────┴──────────────────────────────────────────────────────────────┘
found 11 vulnerabilities (2 low, 8 moderate, 1 high) in 26316 scanned packages
  11 vulnerabilities require manual review. See the full report for details.

当我尝试npm install 时会出现这种情况,并且所有这些都需要人工审核。我试图访问this 以查看更多信息,显然这是因为我的lodash4.17.4 版本。所以我运行了npm install --save lodash@4.17.5 并检查了我的package.json 以确保它正确反映。

但是,漏洞似乎仍然存在。想知道我是否以错误的方式修复它?

根据要求,package.json 的正文

"dependencies": 
   "lodash": "^4.17.5",

【问题讨论】:

在您的package.json 中您对lodash 有什么依赖关系?请在问题正文中发布实际字符串。 @Akrion:是的,确实有 等等......它谈到了react-native-cached-image lib 有这个问题,因为它可能依赖于旧版本的 lodash 不是吗?你能在那个库中看到它在package.json 中说什么吗? 是的,在那个库中你有 4.17.4 刚刚签入他们的 github @github.com/kfiroo/react-native-cached-image/blob/master/… 【参考方案1】:

你可以用https://github.com/rogeriochaves/npm-force-resolutions解决它

1) 添加分辨率部分

"resolutions": 
  "lodash": "^4.17.5"

2) 运行

rm -r node_modules
npx npm-force-resolutions
npm install

【讨论】:

【参考方案2】:

问题与 react-native-cached-image 软件包有关,该软件包依赖于 lodash 4.17.4,您可以在此处看到:https://github.com/kfiroo/react-native-cached-image/blob/master/package.json#L51

【讨论】:

那我只能等包所有者自己更新依赖了?或者对于本地版本,我可以做点什么? 可以导航到 node_module 并对此包进行 npm 更新吗? 他们的最新版本是v1.4.3。如果您使用的是该版本,那么您可以等待(也可以在他们的 repo 上打开一个问题来解决这个问题),或者您也可以fork他们的 repo 并自己进行更改。看看能不能解决。这样至少你可以确定问题是什么,解决方案是什么。 如果你分叉并改变它......如果没有副作用/错误你可以推送 PR 看看他们是否接受等等。 运气好吗?您能证明更改该软件包中的 lodash 版本可以解决问题吗?

以上是关于如何修复 npm 审计修复问题?的主要内容,如果未能解决你的问题,请参考以下文章

npm 审计修复后如何解决原型污染 lodash 需要人工审核

如何修复 NPM 高危漏洞? (污染)

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

npm 审计修复与 npm 安装

npm 审计修复:1 个高严重性漏洞:任意文件覆盖

进行 npm 审计修复时不修改 package.json