【问题标题】:How to fix Seriate and Lodash vulnerabilities如何修复 Seriate 和 Lodash 漏洞
【发布时间】:2019-11-13 23:10:13
【问题描述】:

对于我的项目,我使用了一个包 Seriate。

npm install seriate

但是运行它会得到以下结果:

发现 17 个漏洞(9 个低、1 个中等、7 个高)

我跑了npm auditnpm audit fix 却什么也没有。我还查看了依赖项,Lodash 似乎存在安全问题(据说已在 4.17.11 修复)。

我该如何解决这些问题?我曾尝试像这样更新 lodash:npm install lodash@4.17.11 但这也不起作用。

这也是需要担心的事情,它从本身安全的本地服务器运行?

感谢您的帮助

【问题讨论】:

    标签: node.js npm lodash


    【解决方案1】:

    npm audit 发现的安全问题无法自动修复(即通过将软件包版本更改为等效的安全版本),它们需要人工审核,因此无法简单地通过npm audit fix 修复。 npm audit fix --force 将是一个选项(注意:引入了重大更改!)但对我来说,这 17 个问题都没有解决。

    安装当前版本的seriate 时,lodash@4.7.11 已经是必需的/已安装,因此npm i lodash@4.7.11 不会改变任何内容。

    这些问题在您的情况下是否危险,确实需要您进行调查。请注意,使用lodash 并不是因为lodash 不安全——仅在某些情况下,仅在某些机器上,仅用于某些功能等。首先阅读与安全问题相关的NPM 公告(如this one )。

    【讨论】:

    • 感谢您的解释,我没有使用您链接中指定的命令
    • 我已经在 Seriate 的 github 上发布了一个 issue
    【解决方案2】:

    正如Nino 所述,npm audit 不会自动解决 Lodash 安全漏洞。

    • 发现需要人工审核的安全漏洞

    如果发现安全漏洞,但没有可用的补丁程序,审核报告将提供有关漏洞的信息,以便您进行进一步调查。 snapshot of sample audit report is here

    • 要解决该漏洞,您可以
      1. 检查缓解因素
      2. 如果存在修复,请更新依赖包
      3. 修复漏洞

    检查缓解因素

    查看“更多信息”字段中的安全公告,了解可能允许您在有限情况下继续使用存在漏洞的软件包的缓解因素。例如,该漏洞可能仅在代码用于特定操作系统或调用特定函数时存在。

    如果存在修复,请更新依赖包

    如果存在修复但依赖于存在漏洞的包的包尚未更新以包含修复版本,您可能需要在依赖包存储库上打开拉取或合并请求以使用修复版本。

    1. 要查找必须更新的包,请检查“路径”字段中存在漏洞的包的位置,然后检查依赖于它的包。例如,如果漏洞的路径是@package-name >dependent-package > package-with-vulnerability,则需要更新dependent-package。 p>

    2. npm 公共注册表 上,找到依赖包并导航到其存储库。有关查找包的更多信息,请参阅here

    3. 在依赖包存储库中,打开拉取或合并请求以将易受攻击的包的版本更新为具有修复程序的版本。

    4. 一旦合并拉取或合并请求并且包已在 npm 公共注册表中更新,请使用 npm update 更新您的包副本

    修复漏洞

    如果不存在修复,您可能希望在包存储库的拉取或合并请求中向包维护者建议解决漏洞的更改。

    1. 检查漏洞位置的“路径”字段。
    2. 在 npm 公共注册表中,找到存在漏洞的包。有关查找包的更多信息,请参阅here
    3. 在包存储库中,打开拉取或合并请求以对包存储库进行修复。
    4. 合并修复并在 npm 公共注册表中更新程序包后,使用修复程序更新依赖于程序包的程序包副本。

    【讨论】:

      猜你喜欢
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2021-08-20
      • 2020-02-15
      • 2018-12-24
      • 2020-09-03
      相关资源
      最近更新 更多