Npm 漏洞无法修复

Posted

技术标签:

【中文标题】Npm 漏洞无法修复【英文标题】:Npm vulnerabilities can't be fixed 【发布时间】:2021-09-06 14:44:18 【问题描述】:

我开始学习 react 并通过运行创建了我的第一个应用程序:

'npx create-react-app my-app'

构建应用程序后,我在终端中收到一条警告:

22 个漏洞(9 个中等,13 个高)

我试图通过运行来修复它:

'npm 审计修复'

但它返回了这个:

npm 错误!代码 ERESOLVE npm 错误! ERESOLVE 无法解析依赖树 npm 错误! npm 错误!找到:type-fest@0.21.3 npm 错误! node_modules/type-fest npm 错误! type-fest@"^0.21.3" 来自 ansi-escapes@4.3.2 npm 错误! node_modules/ansi-转义 npm 错误! ansi-escapes@"^4.2.1" 来自@jest/core@26.6.3 npm 错误! node_modules/@jest/core npm 错误! @jest/core@"^26.6.0" 来自 jest@26.6.0 npm 错误!节点模块/开玩笑 npm 错误!来自 jest-watch-typeahead@0.6.1 的对等 jest@"^26.0.0" npm 错误! node_modules/jest-watch-typeahead npm 错误!还有 1 个(反应脚本) npm 错误!还有 1 个 (jest-cli) npm 错误! ansi-escapes@"^4.3.1" 来自 jest-watch-typeahead@0.6.1 npm 错误! node_modules/jest-watch-typeahead npm 错误! jest-watch-typeahead@"0.6.1" 来自 react-scripts@4.0.3 npm 错误!节点模块/反应脚本 npm 错误! react-scripts@"4.0.3" 来自根项目 npm 错误!还有 2 个(开玩笑的观察者,终端链接) npm 错误! npm 错误!无法解决依赖关系: npm 错误! peerOptional type-fest@"^0.13.1" 来自@pmmmwh/react-refresh-webpack-plugin@0.4.3 npm 错误! node_modules/@pmmmwh/react-refresh-webpack-plugin npm 错误! @pmmmwh/react-refresh-webpack-plugin@"0.4.3" 来自 react-scripts@4.0.3 npm 错误!节点模块/反应脚本 npm 错误! react-scripts@"4.0.3" 来自根项目 npm 错误! npm 错误!修复上游依赖冲突,或者重试 npm 错误!此命令与 --force 或 --legacy-peer-deps npm 错误!接受不正确的(并且可能被破坏的)依赖解决方案。 npm 错误! npm 错误!有关完整报告,请参阅 /home/azizdragon/.npm/eresolve-report.txt。

npm 错误!可以在以下位置找到此运行的完整日志:npm ERR! /home/azizdragon/.npm/_logs/2021-06-23T03_09_31_663Z-debug.log

我尝试删除 package-lock.json 文件和 node_modules 文件夹并运行:

npm 安装

但它导致了相同的漏洞,这是我运行“npm audit”时的报告:

浏览器列表 4.0.0 - 4.16.4 严重程度:中等 正则表达式拒绝服务 - https://npmjs.com/advisories/1747 可通过npm audit fix --force 修复 将安装 react-scripts@1.1.5,这是一个重大更改 node_modules/react-dev-utils/node_modules/browserslist react-dev-utils >=6.0.0-next.03604a46 取决于易受攻击的 browserslist 版本 node_modules/react-dev-utils 反应脚本 >=0.10.0-alpha.328cb32e 取决于@pmmmwh/react-refresh-webpack-plugin 的易受攻击版本 取决于@svgr/webpack 的易受攻击版本 取决于 mini-css-extract-plugin 的易受攻击版本 依赖于易受攻击的 react-dev-utils 版本 依赖于易受攻击的 webpack-dev-server 版本 节点模块/反应脚本

css-what https://npmjs.com/advisories/1754 修复可通过 npm audit fix --force 安装 react-scripts@1.1.5,这是一个重大更改 node_modules/svgo/node_modules/css-what css-select 取决于易受攻击的 css-what 版本 node_modules/svgo/node_modules/css-select svgo >=1.0.0 取决于易受攻击的 css-select 版本 节点模块/svgo @svgr/plugin-svgo * 取决于易受攻击的 svgo 版本 node_modules/@svgr/plugin-svgo @svgr/webpack >=4.0.0 取决于@svgr/plugin-svgo 的易受攻击版本 node_modules/@svgr/webpack 反应脚本 >=0.10.0-alpha.328cb32e 取决于@pmmmwh/react-refresh-webpack-plugin 的易受攻击版本 取决于@svgr/webpack 的易受攻击版本 取决于 mini-css-extract-plugin 的易受攻击版本 依赖于易受攻击的 react-dev-utils 版本 依赖于易受攻击的 webpack-dev-server 版本 节点模块/反应脚本 postcss-svgo >=4.0.0-nightly.2020.1.9 取决于易受攻击的 svgo 版本 node_modules/postcss-svgo cssnano-预设-默认 * 取决于易受攻击的 postcss-normalize-url 版本 取决于易受攻击的 postcss-svgo 版本 node_modules/cssnano-preset-default cssnano 4.0.0-nightly.2020.1.9 - 4.1.11 取决于易受攻击的 cssnano-preset-default 版本 节点模块/cssnano 优化-css-assets-webpack-plugin 3.2.1 || 5.0.0 - 5.0.4 || 5.0.6 依赖于易受攻击的 cssnano 版本 node_modules/optimize-css-assets-webpack-plugin

glob-parent https://npmjs.com/advisories/1751 修复可通过 npm audit fix --force 安装将安装 react-scripts@1.1.5,这是一个 突破性变化 node_modules/watchpack-chokidar2/node_modules/glob-parent node_modules/webpack-dev-server/node_modules/glob-parent chokidar 1.0.0-rc1 - 2.1.8 取决于 glob-parent node_modules/watchpack-chokidar2/node_modules/chokidar 的易受攻击版本 node_modules/webpack-dev-server/node_modules/chokidar 手表包-chokidar2 * 取决于易受攻击的 chokidar 版本 node_modules/watchpack-chokidar2 手表包 1.7.2 - 1.7.5 取决于 watchpack-chokidar2 的易受攻击版本 node_modules/watchpack 网络包 4.44.0 - 4.46.0 依赖于易受攻击的 watchpack 版本 节点模块/webpack webpack-dev-server 2.0.0-beta - 3.11.2 取决于易受攻击的 chokidar 版本 node_modules/webpack-dev-server @pmmmwh/react-refresh-webpack-plugin 0.3.1 - 0.5.0-beta.4 依赖于易受攻击的 webpack-dev-server 版本 node_modules/@pmmmwh/react-refresh-webpack-plugin 反应脚本 >=0.10.0-alpha.328cb32e 取决于@pmmmwh/react-refresh-webpack-plugin 的易受攻击版本 取决于@svgr/webpack 的易受攻击版本 取决于 mini-css-extract-plugin 的易受攻击版本 依赖于易受攻击的 react-dev-utils 版本 依赖于易受攻击的 webpack-dev-server 版本 节点模块/反应脚本

规范化-url https://npmjs.com/advisories/1755 可通过 npm audit fix --force 修复,将安装 react-scripts@1.1.5,这是一个重大更改 node_modules/normalize-url node_modules/postcss-normalize-url/node_modules/normalize-url mini-css-extract-plugin 0.6.0 - 1.0.0 取决于易受攻击的 normalize-url node_modules/mini-css-extract-plugin 的版本 反应脚本 >=0.10.0-alpha.328cb32e 取决于@pmmmwh/react-refresh-webpack-plugin 的易受攻击版本 取决于@svgr/webpack 的易受攻击版本 取决于 mini-css-extract-plugin 的易受攻击版本 依赖于易受攻击的 react-dev-utils 版本 依赖于易受攻击的 webpack-dev-server 版本 node_modules/react-scripts postcss-normalize-url node_modules/postcss-normalize-url cssnano-预设-默认 * 取决于易受攻击的 postcss-normalize-url 版本 取决于易受攻击的 postcss-svgo 版本 node_modules/cssnano-preset-default cssnano 4.0.0-nightly.2020.1.9 - 4.1.11 取决于易受攻击的 cssnano-preset-default 版本 节点模块/cssnano 优化-css-assets-webpack-plugin 3.2.1 || 5.0.0 - 5.0.4 || 5.0.6 依赖于易受攻击的 cssnano 版本 node_modules/optimize-css-assets-webpack-plugin

22 个漏洞(9 个中等,13 个高)

要解决不需要注意的问题,请运行:npm audit fix

要解决所有问题(包括重大更改),请运行:npm audit 修复 --force

我应该使用 npm audit fix --force 吗? 如果有帮助,我运行 Linux Mint 18.3 Cinnamon 64 位 节点版本:v16.0.0 NPM 版本:7.18.1

提前致谢。

【问题讨论】:

运行 npm audit fix 几次,然后我认为适度的数字应该减少或警告每次都会减少并再次实际工作。我曾经这样解决过。 遇到了同样的问题。作为节点生态系统的新手,我现在开始担心 - 如果基本的标准脚本创建了一个具有如此多严重漏洞的应用程序,那么它说明了工具的成熟度...... 奇怪的是,我恰好在这个问题上阅读了this blog post by Dan Abramov。要点是这些漏洞中的许多可能不会影响在实践中使用 Create React App 创建的应用程序,因为其中许多依赖项仅在开发中使用。 @alexakarpov 阅读overreacted.io/npm-audit-broken-by-design 了解更多详情,但这并不是对工具成熟度的反映,而是对npm audit 的实施存在问题的反映。如果您在将它们部署到生产环境的 Node.js 应用程序的上下文中使用它们,这些问题可能是个问题,但在 Create React App 的上下文中它们不是。您只需要担心npm audit --production 标记的任何内容。 【参考方案1】:

正如 Matthew Daly 在 Dan Abramov 的这篇博文 npm audit: Broken by Design 之后的 cmets 中所提到的,大部分或可能所有警告都与开发依赖关系有关,因此它们不会影响您的生产构建 strong>,你完全不用担心修复它们。

这并不意味着开发依赖的漏洞在任何情况下、每个包和每个版本中都是无害的。

根据我的经验,大多数时候使用npm audit 无法解决所有问题,而且几乎总是使用npm audit --force 会使情况变得更糟并破坏您的应用程序。

因此,当我安装最新版本的流行且高度维护的软件包(如 create-react-app)时,我会忽略这些警告。

CRA 等库的维护者肯定知道这些警告,如果问题严重,他们会立即修复。

另一种确保这些警告无害的方法是检查reported issues of the create-react-app 或任何其他库,看看响应是什么。

我强烈建议您阅读上述文章,npm audit: Broken by Design。

【讨论】:

以上是关于Npm 漏洞无法修复的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 NPM 高危漏洞? (污染)

npm 审计修复:1 个高严重性漏洞:任意文件覆盖

当包是最新的时,如何修复具有任意文件覆盖高漏洞的 NPM 包 Tar?

多个 npm 审核修复后无法运行 Vue 应用程序

如何修复 vue-cli-service 漏洞?

怎样修复系漏洞?