在package-lock.json中定义的依赖项中修复潜在安全漏洞的正确方法

时间:2018-03-30 23:58:29

标签: github npm package-lock.json

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文件并重新生成它并不是一个好习惯。但是,我看不到任何其他方法来解决此问题。如果我解除此安全漏洞,它将在几天后再次出现。有任何想法吗?谢谢!

9 个答案:

答案 0 :(得分:21)

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

npm install package-name
显然,

替换了包名。

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

npm install package-name@^1.2

将安装最新的修补版本

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

npm audit fix

答案 1 :(得分:6)

要解决此问题:

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

最后: npm安装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上更新项目(commit / push) 只要确保您的package-lock.json版本中出现的每个hoek版本都更改为4.2.1

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

答案 2 :(得分:2)

  

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

然而,这是通常在这种情况下所做的事情 例如,请参阅angular/angular-cli issue 8534PR 8535解析。{。} 这导致了一个依赖项目,如frees-io/freestyle-opscenter-webclientupdate its package-lock.json: PR 31

答案 3 :(得分:2)

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

我使用终端在上面的@rileymanda中尝试了答案:cd进入项目,然后运行npm ls lodash

这发现在我的情况下,错误出在 react-scripts 中。快速Google针对与react-scripts和lodash有关的问题发现这是一个已知问题。

我尝试了各种通过纱线固定的事情-都没有成功。 npm ls lodash仍显示lodash的易受攻击版本。

已阅读Matt Turnbull's blog about improvements to npm,我从yarn切换回npm。 (删除yarn.lock,删除./node_modules。运行npm install)。 npm ls lodash现在显示了正在使用的最新依赖版本-哇!致力于github,现在很高兴该漏洞消失了。

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

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

答案 4 :(得分:1)

最简单/最简单的解决方法是:

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

发件人:https://github.com/Microsoft/vscode/issues/48783#issuecomment-384873041

答案 5 :(得分:0)

  

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

自2019年5月23日起,您现在拥有“ Dependabot: Automated security fixes

  

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

     

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

在“ Configuring automated security fixes”中查看更多信息

  

注意:自动安全修复程序在beta中可用,并且可能会更改。

     

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

答案 6 :(得分: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

答案 7 :(得分:0)

  1. 在GitHub上,导航到存储库的主页。
  2. 在您的存储库名称下,单击“安全性”。
  3. 单击您要查看的警报。
  4. 查看该漏洞的详细信息,以及包含自动安全修复程序的拉取请求(如果有)。
  5. 或者,如果还没有针对警报的自动安全修复程序,则要创建拉动请求以解决该漏洞,请点击创建自动安全修复程序。
  6. 当您准备好更新依赖关系并解决漏洞时,请合并拉取请求。

See details

答案 8 :(得分:0)

尝试npm audit fix,它将解决许多警告

然后npm i [package.name]@xxx

例如:

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

npm i lodash@4.17.13