react-dev-utils 最新版本安装易受攻击的 browserslist 版本

Posted

技术标签:

【中文标题】react-dev-utils 最新版本安装易受攻击的 browserslist 版本【英文标题】:react-dev-utils latest version installs a vulnerable version of browserslist 【发布时间】:2022-01-15 09:34:27 【问题描述】:

react-dev-utils@11.0.4 安装易受攻击的浏览器列表版本,browserslist@4.14.2,尽管我们已经在 github 上更新了包。 https://github.com/facebook/create-react-app/blob/main/packages/react-dev-utils/package.json#L57

[为了测试,您可以简单地创建任何文件夹并执行npm i react-dev-utils,然后使用npm ls browserlist检查它]

我不明白,这有什么限制。 (我没有看到这个包的任何package-lock.json,这可能是导致漏洞的潜在原因)。旧版本已报告漏洞CVE-2021-23364。

【问题讨论】:

仅供参考,react-dev-tools 没有实际的安全问题,因为它不解析用户提供的浏览器查询。 好的,谢谢,可能是这种情况,但无论如何我希望将包更新到一个没有任何报告漏洞的包。 【参考方案1】:

react-dev-utils@11.0.4 安装易受攻击的browserlistbrowserslist@4.14.2 版本,尽管我们已经在 github 上更新了包

这是因为package.json 文件位于默认分支中,该分支通常包含最新或开发代码。在您发布问题时,该更改尚未发布到 npm 注册表。

react-dev-utils@11.0.4 在其软件包中列出了browserslist@4.14.2,因此这是将要安装的版本。参考:https://cdn.jsdelivr.net/npm/react-dev-utils@11.0.4/package.json

您至少需要react-dev-utils@12.0.0 才能修复该漏洞。请参阅versions tab。


[要进行测试,您可以简单地创建任何文件夹并执行npm i react-dev-utils 然后使用npm ls browserlist 进行检查]

运行该命令将安装最新版本的react-dev-utils,它现在没有漏洞。所以它会解决你的问题。


我没有看到这个包的任何 package-lock.json,这可能是漏洞的潜在原因

package-lock.json 无法发布到注册表,仅尊重***锁定文件。参考:Should package-lock.json also be published?


这可能是一个示例包,但一般我们如何更新到最新包? npm update 也试过了。

npm update 尊重您在package.json 中设置的semver range。如果它像"react-dev-utils": "11.0.4",那么该命令将不会做任何事情。如果它是"react-dev-utils": "^11.0.4",它会尝试更新到您已经使用的最新11.x.x 版本,所以它不会做任何事情。参考:npm update does not do anything

一般来说,如果您想将每个直接依赖项升级到最新版本,您可以在运行npm update 之前使用npm-check-updates。有关详细指南,请参阅https://nodejs.dev/learn/update-all-the-nodejs-dependencies-to-their-latest-version。相关:How to update each dependency in package.json to the latest version?

现在,如果它不是直接依赖项,就像您的情况一样,您可以强制解决。 Yarn 和 NPM v8.3.0 及更高版本原生支持这一点。在较旧的 NPM 版本中,您需要使用像 npm-force-resolutions 这样的依赖项。相关话题:npm equivalent of yarn resolutions?

您可以通过网络搜索轻松找到更多相关主题。

【讨论】:

感谢您的详细回答,将深入挖掘并尝试理解。它不仅仅是关于 create-react-app 中的这个单个包,还有许多其他包。将采用您建议的方法,如果有其他问题,将在线程中询问。谢谢!

以上是关于react-dev-utils 最新版本安装易受攻击的 browserslist 版本的主要内容,如果未能解决你的问题,请参考以下文章

编译失败。 ./node_modules/react-dev-utils/formatWebpackMessages.js 找不到模块:无法解析

第三方库(react-dev-utils / webpackHotDevClient)在require('chalk')上获取空对象

Drupal 站点存在 Symfony 缺陷易受攻击 建议立即修复

犯罪分子利用易受攻击 Docker 镜像的速度有多快?

安卓手机app如何旧版本覆盖新版本,不用卸载且不删数据?

服务器安装新版本R及Seurat方法