如何手动修复npm漏洞?

当我运行npm install它说found 33 vulnerabilities (2 low, 31 moderate) runnpm

audit fixto fix them, ornpm auditfor details

但是,npm audit fix输出up to date in 11s fixed 0 of 33 vulnerabilities in 24653

scanned packages 33 vulnerabilities required manual review and could not be

updated

这是否review意味着它不应该由用户修复?

当我运行npm audit它时,它会给我表的列表,类似于此:

┌───────────────┬──────────────────────────────────────────────────────────────┐

│ Low │ Prototype Pollution │

├───────────────┼──────────────────────────────────────────────────────────────┤

│ Package │ lodash │

├───────────────┼──────────────────────────────────────────────────────────────┤

│ Patched in │ >=4.17.5 │

├───────────────┼──────────────────────────────────────────────────────────────┤

│ Dependency of │ browser-sync [dev] │

├───────────────┼──────────────────────────────────────────────────────────────┤

│ Path │ browser-sync > easy-extender > lodash │

├───────────────┼──────────────────────────────────────────────────────────────┤

│ More info │ https://nodesecurity.io/advisories/577 │

└───────────────┴──────────────────────────────────────────────────────────────┘

在此示例中,链接页面的补救部分说Update to version 4.17.5 or

later.。但是,/node_modules/browser-sync/package.json其中有几行:

"devDependencies": {

"lodash-cli": "4.17.5",

}

不再有lodash依赖项。因此它应该已经是v4.17.5。我还检查了/node_modules/lodash/lodash.jsonvar

VERSION = '4.17.10';条线。在/node_modules/lodash/package.json有这些线路:

  "_from": "lodash@^4.17.4",

"_id": "lodash@4.17.10",

我认为该版本显示在“ _id”中,而不是在“ _from”中,因此版本是正确的,但漏洞仍会出现在审核列表中。

我仍然是node.js的新手,这些消息使我非常困惑。有什么办法可以手动修复它或摆脱那些消息,我无能为力?

回答:

lodash-cliin devDependencies不会影响browser-

sync项目的工作方式,devDependencies将软件包作为依赖项安装时将被忽略。

什么audit报告说的是,这是easy-extenderlodash依赖性:

browser-sync > easy-extender > lodash

它取决于Lodash 3,而该问题已在Lodash 4中得到解决。可以通过分叉easy-

extender,更新和安装它(而不是NPM公共注册表中的软件包)来解决此问题。但是这种依赖性没有真正的问题。

audit报告重要性应手动评估。即使嵌套的依赖项具有安全风险,也并不意味着已使用引入此风险的功能。这也不意味着即使使用它,也会由于使用方式而带来实际风险。

browser-sync是未在生产中使用的开发工具,没有太多可以利用其漏洞的方案。和 原型污染

是不是所有漏洞,只是一个通知,一包不遵循良好的做法,可以忽略不计。

通常,这是修复报告的漏洞的方法:

  • 做一个健全性检查
  • 万一这是一个真正的问题,请检查易受攻击软件包的存储库中是否存在现有问题 PR
  • 如果没有,请提交问题
  • 分叉存储库或使用现有PR作为git依赖项,直到在NPM版本中对其进行修复
  • 如果嵌套了依赖项,请在多个嵌套级别上执行此操作

多数情况下,预计您不会超越健全性检查标准。

patch-package可以帮助就地修补嵌套的依赖关系,但这不会影响audit报告。

以上是 如何手动修复npm漏洞? 的全部内容, 来源链接: utcz.com/qa/434048.html

回到顶部