11

我最近将我们网站上的更新推送到我们的服务器,这不知何故导致它被感染,我们的一堆文件被损坏,用户开始被重定向到随机网站等。显然这是由我们的一个依赖项引起的。我正在使用 npm 来管理我们网站的依赖项,并且最近了解了 npm 审计。每当我运行 npm audit 时,有 15 个漏洞需要手动审查,我尝试通过更新到报告中每个的更多信息部分建议的版本来修复它们,但是当我运行 npm audit 时,漏洞仍然存在。我尝试更新路径中相关包中的版本报告的部分,当我运行 npm audit 时它仍然存在。我显然不想再次上传有漏洞的文件并破坏我们服务器上的所有站点,我只是非常不确定如何修复这些由 npm audit 提出的安全漏洞。

例如,这是报告中唯一出现的高风险:

高│正则表达式拒绝服务
包│tough-cookie
补丁在│>=2.3.3
依赖关系│gulp-uncss [dev]
路径│gulp-uncss > uncss > request >ough-cookie
更多信息│ https://nodesecurity .io/advisories/525

当我在我的 package.json 以及请求中将包更新为 >= 2.3.3 然后运行 ​​npm audit 时,漏洞仍然存在。知道如何修复此/修复漏洞吗?

4

1 回答 1

6

它可能会迟到,但总比没有好。我只是一个在 nodejs 领域工作超过 2 年的新手,并且也遇到了很多审计警告,这就是我如何处理那些需要手动审查的漏洞。

首先,您必须了解那些需要人工审核的漏洞并不是您在代码中直接安装和调用的包的版本。它们来自那些包的依赖调用。在您的情况下,您使用包“gulp-uncss”并在“gulp-uncss”的代码中,它调用自身名称的另一个依赖项“tough-cookie”。您安装的软件包正在管理自身的依赖关系,它不受您更新更新或旧版本的依赖关系的影响。您可以将包“tough-cookie”更新为 >= 2.3.3,但“gulp-uncss”将始终调用版本 < 2.3.3 的“tough-cookie”

因此,您有两种选择:

  • 转储该软件包并使用另一个具有类似任务且没有漏洞的软件包。
  • 分叉到该包的仓库,进行更改并创建拉取请求,等待拉取请求被接受,在更新已适应拉取请求的新版本后,您将能够使用该包而没有漏洞
于 2020-05-11T08:59:25.263 回答