postcss 7.0.0 - 8.2.9 严重性:中等正则表达式拒绝服务

postcss 7.0.0 - 8.2.9 Severity: moderate Regular Expression Denial of Service

create-react-app 下创建新项目时,您会立即收到有关 postcss 中发现的漏洞的警告。

npm 报告的问题:https://www.npmjs.com/advisories/1693

相关未解决的问题可以在这里找到:

该问题已在 postcss v8.2.10 上修复,但由于 react-scripts 尚未升级依赖项,因此在创建新项目时仍然存在。

所以,我的问题是我无法再运行 构建,因为它们由于漏洞而失败。

因为我迫不及待地等他们打好补丁才能继续处理我的东西(他们似乎从一年前就意识到了这一点),是否有一些解决方法可以用来解决这个问题?

我尝试在 package.json 上添加 postcss 分辨率:

  "resolutions": {
    "postcss": "^8.2.10"
  },

但这并没有让我走得太远。

有什么想法吗?

这篇文章帮助了我。 https://www.npmjs.com/package/npm-force-resolutions。 要使用您编写的决议,您应该通过在 package.json

中添加此脚本来强制执行它们
"scripts": {
  "preinstall": "npx npm-force-resolutions"
}

在那之后 运行 npm install 它应该覆盖所有嵌套的依赖项

无论如何,由于许多依赖项,它不会工作。好消息是对 postcss 8 的支持已经合并,可能很快就会发布 https://github.com/facebook/create-react-app/issues/9664

或者,您可以使用 yarn audit 而不是 npm 来解决它。

yarn audit --groups postcss

此命令只会忽略来自安全检查的 postcss 包。

切换到 Yarn 让这变得更简单。

rm -rf ./node_modules 
rm ./package-lock.json

编辑你的 package.json :
添加任何其他软件包版本以从 npm / yarn audit 升级

  "resolutions": 
  {
    "postcss": "^8.2.10"
  },

yarn install 然后 运行 yarn audit 应该产生神奇的词:

0 vulnerabilities found - Packages audited: 999
✨  Done in 1.10s.

由于我的 post 中的 browserslist 包,我设法将审计问题减少到一个中等漏洞:

postcss 更新到版本 8.x.x 解决方案导致我遇到构建问题。我是网络开发新手,猜测插件的版本 8 重大更改是罪魁祸首。版本 7.0.36 是为我构建和运行的最新版本 7 postcss。变更日志指出此版本具有从版本 8 向后移植的 ReDoS 修复程序。我似乎无法解决 browserslist 包问题,除非它在运行时导致 'module not found' 错误。我猜我们必须等待 CRA 团队更新 react-scripts 以获得更彻底的解决方案。