当前位置: 首页 > 面试题库 >

如何手动修复npm漏洞?

汪迪
2023-03-14
问题内容

当我运行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报告。



 类似资料:
  • 我开始学习react,并通过运行以下程序创建了我的第一个应用程序: npx创建-反应-应用程序我的应用程序 应用程序建成后,我在终端上收到一个警告,上面写着: 22个漏洞(9个中度,13个高度) 我试图通过运行以下命令来修复它: “npm审核修复程序” 但它返回了这个: npm错误!代码ERE解决npm错误!ERESOLVE无法解析依赖关系树npm错误!npm错误!发现:类型-fest@0.21.

  • 在我创建了一个新的Angular 12.0.3项目后,立即检测到8个高漏洞和40个中等漏洞。 当尝试使用修复问题时,没有任何变化。将漏洞减少到9个中度漏洞和7个高度漏洞,但当我尝试运行项目时,由于版本不匹配,会显示以下错误: 我已经尝试按照此答案中描述的解决方案修复漏洞,但这破坏了项目。 此外,我使用angle-cli的v11-lts创建了一个项目,但同样的问题伴随着不同的漏洞: 有没有办法,修复

  • Checkmarx在我的Controller类中为以下方法提供了XSS漏洞。具体来说:此元素的值(ResultsVO)随后在代码中流动,而没有经过适当的清理或验证,最终在方法中显示给用户: ResultsVO对象有很多String属性,我只是想知道是否有一种优雅的方法来编码它们以防止此漏洞。

  • 当我运行npm start时,我看到错误。 我尝试过这个方法,但没有成功:https://techoverflow.net/2019/04/01/how-to-fix-npm-err-missing-script-start/ {“private”:true,“scripts”:{“dev”:“npm运行development”,“development”:“cross-env node_env=

  • 我们应该处理的XML消息的格式如下: 收到的例外: javax。xml。绑定解组异常:意外元素(uri:,本地:“ns0:MessageType”)。预期的元素是 上述异常发生在com中。xmlprocessor。MessageParser类。上述课程中的代码过去是这样的(并且已经工作了很长时间): 事实证明,这会给你带来XXE的坏情况。所以我们尝试了许多非常相似的东西DocumentBuilde