修复漏洞 - “沉浸器中的关键原型污染”已修补 >=9.0.6

Jun*_*ite 11 dependencies npm reactjs immer.js npm-vulnerabilities

以下是针对以下漏洞的修复:

Critical        Prototype Pollution in immer                                  

Package         immer                                                         

Patched in      >=9.0.6                                                       

Dependency of   react-scripts                                                 

Path            react-scripts > react-dev-utils > immer                       

More info       https://github.com/advisories/GHSA-33f9-j839-rf8h
Run Code Online (Sandbox Code Playgroud)

使固定:

  1. 安装 immer 的修补版本,在本例中9.0.6,使用以下命令:

     npm install --save immer@9.0.6
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用 更新 package.json 文件npm update

    重要提示:如果此时漏洞仍然存在,则仅当您知道这不会破坏您的代码或扰乱项目的先前版本或其他包的依赖项时,您才可以执行以下操作。我是唯一从事我的项目的人,因此此修复适用于我的场景。

  3. 在您的package-lock.json文件中,找到过时的软件包,在我的例子中:

             "immer": {
                 "version": "8.0.1",
                 "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz",
                 "integrity": "sha512-aqXhGP7//Gui2+UrHtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaH9RZ1j1xlIYqaaaipBoqcqeibkc17PNvF=="
             },
    
    Run Code Online (Sandbox Code Playgroud)

    并直接删除它。

对于所有包/依赖项来说,此修复似乎不太可持续,但谁知道呢?如果有更好的方法,请让社区知道。

pzr*_*zrq 0

您的修复应该足以修补该关键漏洞,尽管您已经发现它往往很脆弱且易于撤消。

如果可能,请更新到react-scripts@^5.0.0或更高版本。它已经通过 react-dev-utils 过渡升级到 immer@^9.0.7

如果出于某种原因(例如删除了polyfills或其他原因)你无法升级react-scripts,我建议在查看immer的重大更改后:

  1. npm-force-resolutions,将以下内容添加到package.json,然后npm install
      "resolutions": {
        "immer": "9.0.12"
      },
      "scripts": {
        "preinstall": "npx npm-force-resolutions"
      },
Run Code Online (Sandbox Code Playgroud)
  1. 或者纱线分辨率将以下内容添加到package.json,然后yarn install
      "resolutions": {
        "immer": "9.0.12"
      },
Run Code Online (Sandbox Code Playgroud)

当然,如果其他人将来发现 immer 中的另一个漏洞,您需要在更高版本中重复此操作。

PS 很抱歉回答我确定是重复的问题,尽管现在没有明显的链接可以跳出来。