修复 NPM 漏洞

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

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

npm audit fix
npm audit fix --force
npm update

npm audit 表示仍有 24 个漏洞。但是以上命令都不能修复它们。

npm outdated 没有输出。

易受攻击的软件包是:

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

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

修复这些漏洞的下一步是什么?

我努力了:

您可以在空目录中使用以下 package.json 重现我的最新状态并运行 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 个高漏洞(在撰写本文时,运行 npm 8.5.5)。

stack overflow Fixing NPM vulnerabilities
原文答案
author avatar

接受的答案

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

那么,我做了什么?

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

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

2.删除 node_modules 文件夹

  1. 运行 npm install
  2. 运行 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。


答案:

作者头像

尝试使用此命令更新所有 npm。它帮助了我

npm install -g npm@latest