Node.js 如何手动修复npm漏洞?

Node.js 如何手动修复npm漏洞?,node.js,npm,npm-audit,Node.js,Npm,Npm Audit,当我运行npm install时,它说发现了33个漏洞(2个较低,31个中等) 运行'npm audit fix'来修复它们,或运行'npm audit'来获取详细信息 但是,npm审计修复程序在11s内输出最新的 修复了24653个扫描包中33个漏洞中的0个 33漏洞需要手动审查,无法更新 这是否意味着它不应该由用户修复 当我运行npm audit时,它会给我一个表列表,类似于以下内容: ┌───────────────┬────────────────────────────────────

当我运行
npm install
时,它说
发现了33个漏洞(2个较低,31个中等)
运行'npm audit fix'来修复它们,或运行'npm audit'来获取详细信息

但是,
npm审计修复程序
在11s内输出最新的

修复了24653个扫描包中33个漏洞中的0个
33漏洞需要手动审查,无法更新

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

当我运行
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                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
在这个例子中,链接页面的修正部分说
更新到4.17.5版或更高版本。
。但是,在
/node\u modules/browser sync/package.json
中有几行:

"devDependencies": {
    "lodash-cli": "4.17.5",
}
不再依赖于洛达斯。所以它应该已经是v4.17.5了。我还检查了
/node\u modules/lodash/lodash.json
,它的var版本为'4.17.10'行。在
/node\u modules/lodash/package.json
中有以下几行:

  "_from": "lodash@^4.17.4",
  "_id": "lodash@4.17.10",
我相信版本显示在“\u id”中,而不是“\u from”中,所以版本是正确的,但漏洞仍然出现在审计列表中


我还是node.js的新手,这些消息让我很困惑。是否有任何方法可以手动修复它或删除那些消息,我对此无能为力?

lodash cli
中的
devdependency
不会影响
browser sync
在项目中的工作方式,当包作为依赖项安装时,
devdependency
将被忽略

audit
报告所说的是,正是
easy extender
具有
lodash
依赖性:

browser-sync > easy-extender > lodash        
它,而问题在Lodash 4中得到了解决。这个问题可以通过分叉
easy extender
、更新它并安装它来解决,而不是从NPM公共注册表安装包。但这种依赖性并没有真正的问题

审计
应手动评估报告的重要性。即使嵌套依赖项存在安全风险,这并不意味着使用了引入此风险的功能。这也并不意味着即使使用了它,也会因其使用方式而带来真正的风险

browser sync
是生产中未使用的开发工具,其漏洞可被利用的情况并不多。而原型污染根本不是一个漏洞,只是一个通知,一个包没有遵循良好的做法,它可以被忽略

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

  • 做一次精神检查
  • 如果这是一个真正的问题,请检查易受攻击软件包的存储库中是否存在问题和PRs
  • 如果没有,提交一个问题
  • 分叉存储库或将现有PR用作,直到在NPM版本中修复为止
  • 如果是嵌套依赖项,请在多个嵌套级别执行此操作
大多数情况下,人们期望你不会超越理智检查


可以帮助修补嵌套的依赖项,但这不会影响
审核
报告。

我的系统中出现的大多数问题都是由于npm包造成的。 我试过了

您不必再次安装


只要再运行一次程序。它对我很有效。

如果您绝对确定要跳过审核,您可以通过添加--no audit来完成

 npm install --no-audit

“npm audit fix”将增加package.json中依赖项的版本,这可能导致代码中断。 所以更好的方法是打开package-lock.json并将依赖项/子依赖项版本更新为所需版本。在存储库中维护package-lock.json


有时漏洞来自开发包,在这种情况下,忽略这些漏洞,因为这些漏洞不会在生产中被发现

我没有注意路径部分,它实际上使用了lodash v3.10.1,谢谢。但浏览器同步只是一个例子,是列表中的最后一个。所以,我可以忽略2个低漏洞,但我可以忽略31个中等漏洞吗?我想我不应该修改
node\u模块中的任何内容,那么分叉和修复是摆脱它们的唯一方法吗?作为新用户,我没有能力做到这一点?我应该向软件包开发人员发布它们吗?但是我可以忽略31个中等的吗这就是“理智检查”的含义,运用你的判断。你越是关注这些报告的实际内容,你就越能成为一个更好的开发人员,更能理解安全问题。我应该向软件包开发人员发布它们吗你可能应该(至少关闭
审计
了),答案就是这样。人们生活在某种程度上没有npm审计。它们对应用程序造成真正安全问题的可能性很低,但如果不知道它们是什么以及它们在应用程序中的使用方式,我无法保证。谢谢!花时间写评论,所以在评论之前没有看到编辑的部分。这是否回答了您的问题?
 npm install --no-audit