首页 > 解决方案 > npm - 如何将传递依赖项升级到特定的较新版本?(为了修复 cve)

问题描述

以下是我需要升级的软件包。

我试图更新以下包中version的.signaturepackage-lock.json

一旦我npm i修改后package-lock.json,所做的更改就会 package-lock.json消失。

在此处输入图像描述

截至今天,xmldomnpm 包无法升级到0.7.0,因为维护者在将0.7.0版本推送到 npm 注册表时遇到了一些问题

我已经尝试了其他 stackoverflow 帖子中提到的答案,但即使报告的问题相同,它似乎也无法解决我的问题。

如果有任何标准方法可以解决这个问题,请分享。

请建议如何解决这个问题

包.json

  {
  "name": "qabot",
  "version": "1.0.0",
  "description": "",
  "main": "index.slack.js",
  "nodemonConfig": {
    "ignore": [
      "config/*",
      "tempdirectory/*"
    ]
  },
  "engines": {
    "node": "12.18.4"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@slack/bolt": "^3.2.0",
    "axios": "^0.21.1",
    "botbuilder": "^4.12.0",
    "convert-excel-to-json": "^1.7.0",
    "express": "^4.17.1",
    "node-vault": "^0.9.22",
    "node-vault-client": "^0.5.6",
    "qs": "^6.10.1"
  }
}

标签: javascriptnode.jsnpm

解决方案


有很多选择。我要做的第一件事是确定这些警告中的任何一个是否相关。

在您的情况下,xmldom依赖项本身adal-node就是“用于 node.js 应用程序对 AAD 进行身份验证以访问 AAD 受保护的 Web 资源”的依赖项。如果你没有像那样远程做任何事情,那么你很可能不需要太担心它。(如果您愿意,您也可以采取额外的步骤,例如删除node_modules/xmldom或替换为 0.7.0。)

其他两个漏洞依赖于convert-excel-to-json.

一个是yargs-parser命令行参数解析器。如果您没有使用命令行convert-excel-to-json,或者不允许用户影响传递给 CLI 的参数,那么您可能不会受到该参数的影响。

最后一个是拒绝服务xlsx。这是您在convert-excel-to-json直接使用模块时可能使用的依赖项。(如果不是,npm uninstall convert-excel-to-json请解决。)如果您可以控制 .xlsx 文件的内容(并且用户无法影响内容),那么您可能不会受到攻击。根据用例,您还可以决定不担心拒绝服务。(如果机器人或您正在构建的任何东西只有一两个用户,并且是您和您的朋友或其他任何人,那么你们俩都不太可能故意拒绝自己的服务。)

如果其中任何一项确实影响了您并且对您来说是重大问题,那么您可以尝试很多事情:

  • 检查相关问题跟踪器以查看是否正在修复。
  • 手动将依赖项更新到所谓的不兼容版本(但前提是您有良好的测试覆盖率)。
  • 寻找替代依赖项。
  • fork 现有的依赖项并使用您的 fork。
  • 我现在没有想到的其他选项,其中许多可能比上述所有选项都好。

推荐阅读