98

Github 在我的一个存储库中给了我这个错误。

We found a potential security vulnerability in one of your dependencies.
A dependency defined in ./package-lock.json has known security vulnerabilities 
and should be updated.

package.json我们的文件中没有定义依赖项。package-lock.json据我了解,删除文件并重新生成它不是一个好习惯。但是,我看不到任何其他方法可以解决此问题。如果我忽略这个安全漏洞,它会在几天后再次出现。有任何想法吗?谢谢!

4

9 回答 9

79

新:现在,您可以使用 npm@6 直接运行

npm audit fix

老答案:

您应该尝试识别有问题的包的名称,然后运行

npm install package-name

显然,替换包名。

这将安装最新版本的软件包,并且通常最新版本已经修复了安全问题。如果您对版本有限制(例如:1.2),您可以随时尝试:

npm install package-name@^1.2

并且将安装最新的补丁版本

于 2018-05-31T10:12:18.010 回答
8

要解决此问题:

解决方案1: 首先找到漏洞:使用你的终端: cd进入你的项目,然后运行“npm ls hoek”

最后: npm install bcrypt@latest

然后将更新的项目推送到 git。(即执行新的提交)。

解决方案2:

如果第一个选项/解决方案不能解决问题。在 package-lock.json 中手动更改版本。手动将版本从 2.16.3 更改为 4.2.1

"hoek": {
      "version":  "4.2.1",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true

然后在 GitHub 上更新您的项目(提交/推送)只需确保您的 package-lock.json 版本中出现的每个 hoek 版本都更改为 4.2.1

或者,如果您能找到一种方法来使用 npm 更改 hoek 版本/更新 hoek,这将使事情变得更加简单。(类似于:npm update @hoek..version)..或者卸载特定的依赖项,然后使用 bower 或重新安装它npm。

于 2018-06-29T18:16:54.303 回答
5

在我使用纱线构建的项目中,我遇到了与 lodash 安全漏洞相同的问题。Github 将这些标记为安全问题。

我尝试了上面@rileymanda 的答案,使用终端: cd into project,然后运行npm ls lodash​​.

这发现在我的情况下,错误出现在react-scripts中。快速谷歌搜索 react-scripts 和 lodash 发现这是一个已知问题。

我尝试了各种通过纱线修复的事情 - 都没有成功。 npm ls lodash仍然显示易受攻击的 lodash 版本正在使用中。

在阅读了Matt Turnbull 的关于 npm 改进的博客后,我从 yarn 切换回了 npm。(删除yarn.lock,删除./node_modules。运行npm install)。npm ls lodash现在显示正在使用的最新依赖版本 - 哇!提交到 github,现在很高兴漏洞已经消失。

看起来纱线可能正在努力解决这些问题(或不打算这样做)。

如果您在使用 yarn 构建时遇到此问题,请尝试将 [back] 切换到 npm!

于 2019-07-30T07:25:30.740 回答
3

解决此问题的最简单/最简单的方法是:

  1. npm install <dep>
  2. npm uninstall <dep>
  3. npm update
  4. npm install

来自:https ://github.com/Microsoft/vscode/issues/48783#issuecomment-384873041

于 2018-08-31T18:57:49.067 回答
3

据我了解,删除 package-lock.json 文件并重新生成它不是一个好习惯。

然而,这是在这种情况下通常会做的事情。
参见例如angular/angular-cli 问题 8534,由PR 8535解决。
这导致一个依赖项目喜欢frees-io/freestyle-opscenter-webclient更新它的package-lock.json:PR 31

于 2018-03-31T04:16:08.590 回答
2

已知的安全漏洞,应该更新。

自 2019 年 5 月 23 日起,您现在拥有“ Dependabot:自动安全修复

通过 Dependabot 的集成,我们发布了自动安全修复程序作为公开测试版。

自动安全修复是 GitHub 生成的用于修复安全漏洞的拉取请求。
它们使工作流程中繁琐的部分自动化,并使开发人员可以轻松地使他们的依赖项保持最新。

在“配置自动安全修复”中查看更多信息

注意:自动安全修复程序在测试版中可用,并且可能会发生变化。

您可以为使用安全警报和依赖关系图的任何存储库启用自动安全修复。
从 2019 年 5 月开始,我们将在接下来的几个月内自动在每个使用安全警报和依赖关系图的存储库中启用自动安全修复。

于 2019-05-23T16:54:55.443 回答
1

试试吧npm audit fix,它会解决很多警告

然后npm i [package.name]@xxx

例如:

"dependencies": {
  "lodash": ">=4.17.13"
}

npm i lodash@4.17.13

于 2019-08-18T08:16:45.207 回答
0

这对我有用。卸载所有依赖项并重新安装

例如

package.json查看你的依赖列表

{
"name": "ebook-saler",
  "version": "1.0.0",
  "description": "App for selling ebooks",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "Md Shayon",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "express-handlebars": "^3.1.0",
    "hoek": "^6.1.3",
    "stripe": "^7.5.0"
  }
}

按照这个命令

npm uninstall body-parser express express-handlebars hoek stripe
npm install body-parser express express-handlebars hoek stripe
git commit -m "updated"
git push
于 2019-07-28T13:22:31.897 回答
0
  1. 在 GitHub 上,导航到存储库的主页。
  2. 在您的存储库名称下,单击安全性。
  3. 单击您要查看的警报。
  4. 查看漏洞的详细信息,以及包含自动安全修复程序的拉取请求(如果有)。
  5. 或者,如果警报还没有自动安全修复程序,要创建拉取请求以解决漏洞,请单击创建自动安全修复程序。
  6. 当您准备好更新依赖项并解决漏洞时,请合并拉取请求。

阅读详情

于 2019-07-28T13:26:45.770 回答