如何手动修复npm漏洞?
当我运行npm install
它说found 33 vulnerabilities (2 low, 31 moderate) run
npm
audit fixto fix them, or
npm 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.json
哪var
VERSION = '4.17.10';条线。在/node_modules/lodash/package.json
有这些线路:
"_from": "lodash@^4.17.4", "_id": "lodash@4.17.10",
我认为该版本显示在“ _id”中,而不是在“ _from”中,因此版本是正确的,但漏洞仍会出现在审核列表中。
我仍然是node.js的新手,这些消息使我非常困惑。有什么办法可以手动修复它或摆脱那些消息,我无能为力?
回答:
lodash-cli
in devDependencies
不会影响browser-
sync项目的工作方式,devDependencies
将软件包作为依赖项安装时将被忽略。
什么audit
报告说的是,这是easy-extender
有lodash
依赖性:
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