如何修复Seriate和Lodash漏洞

时间:2019-07-03 09:34:09

标签: node.js npm lodash

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

npm install seriate

无论如何运行都会产生以下结果:

  

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

我跑了npm auditnpm audit fix却一无所获。我还研究了依赖关系,Lodash似乎有一个安全问题(据说已修复为4.17.11)。

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

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)。

答案 1 :(得分:0)

Nino npm audit提到不会自动解决Lodash安全漏洞。

  • 发现安全漏洞需要手动审核

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

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

检查缓解因素

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

如果存在修补程序,则更新相关软件包

如果存在修补程序,但依赖于带有漏洞的软件包的软件包尚未更新为包含固定版本,则您可能需要在从属软件包存储库中打开提取或合并请求以使用固定版本。

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

  2. npm公共注册表上,找到相关程序包并导航至其存储库。有关查找软件包的更多信息,请参见here

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

  4. 合并合并请求或合并请求后,并且已在npm公共注册表中更新了软件包,请使用npm update

  5. 更新软件包的副本

修复漏洞

如果不存在修补程序,则可能需要在程序包存储库中的拉取或合并请求中提出针对程序包维护者的漏洞解决建议。

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