修复 NPM 漏洞

Fixing NPM vulnerabilities

我正在学习 TypeScript 教程。不幸的是,这些软件包已过时,我收到了有关漏洞的警告。

我遵循了 npm check and update package if needed 的一系列建议,即:

npm audit fix
npm audit fix --force
npm update

npm audit 说还有 24 个漏洞。但上述命令中的 none 将修复它们。

npm outdated 结果没有输出。

易受攻击的软件包是:

ansi-regex
glob-parent
node-forge
nth-check
postcss

我实际上不知道为什么它们是我项目的一部分,我的 package.json 配置中没有它们。

修复这些漏洞的后续步骤是什么?

我试过:

您可以在空目录中使用以下 package.json 和 运行ning npm install.

重现我的最新状态
{
  "name": "pacman",
  "version": "0.0.1",
  "description": "I just follow a tutorial. Nothing of interest.",
  "keywords": ["game"],
  "license": "MIT",
  "author": "someone stupid",
  "scripts": {
    "build": "parcel build index.html",
    "dev": "parcel index.html --open",
    "start": "npm run build && npm run dev",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.16.0",
    "@typescript-eslint/parser": "^5.16.0",
    "ansi-regex": "^6.0.1",
    "eslint": "^8.12.0",
    "eslint-config-prettier": "^8.5.0",
    "eslint-plugin-prettier": "^4.0.0",
    "glob-parent": "^6.0.2",
    "node-forge": "^1.3.0",
    "nth-check": "^2.0.1",
    "parcel": "^2.4.0",
    "parcel-bundler": "^1.12.5",
    "postcss": "^8.4.12",
    "prettier": "^2.6.1",
    "typescript": "^4.6.3"
  },
  "dependencies": {
    "npm": "^8.5.5"
  }
}

这应该给你 24 个漏洞,18 个中等和 6 个高(在撰写本文时,运行ning npm 8.5.5)。

根据评论,我已经尝试了一般情况下的所有命令,在这种情况下,您需要开始分析单个包。

那么,我做了什么?

  1. 将所有依赖项更新到最新版本。

接下来,通过删除一半依赖项并重复以下步骤来执行二进制搜索

  1. 删除 node_modules 文件夹
  2. 运行 npm install
  3. 运行 npm audit 检查漏洞

如果没有漏洞,请添加您要安装的剩余软件包的一半。

如果存在漏洞,请删除您当前安装的一半软件包。

在我的例子中,这个过程归结为以下两行:

"parcel": "^2.4.0",
"parcel-bundler": "^1.12.5",

对于 parcel-bundler,NPM 发出警告:

npm WARN deprecated parcel-bundler@1.12.5: Parcel v1 is no longer maintained. 
Please migrate to v2, which is published under the 'parcel' package.

所以我想我根本不需要 parcel-bundler,因为它已经集成到 parcel 包中,我已经在前面的步骤中将其更新到版本 2。