如何在package.json中列出的package-lock.json中修复易受攻击的npm软件包?

时间:2018-05-14 10:39:14

标签: node.js npm package.json package-lock.json

Github告诉我,我的package-lock.json文件中的依赖项容易受到攻击并过时。问题是,如果我执行npm installnpm update,它们都不会更新package-lock.json文件中的依赖项。

我已经对此进行了大量的Google搜索,并删除了文件并完成了npm install

如果有人能帮忙解决这个问题,我非常感激。有问题的软件包是Hoek,我在package.json文件中实际上没有。

非常感谢提前。

10 个答案:

答案 0 :(得分:13)

听起来好像Hoek是你的一个依赖项的依赖项(所以,你的package.json中的一个包需要它来自它自己的package.json)。

您已尝试删除/重新安装和更新项目依赖项,但未成功,因此似乎所涉及的程序包相关性已指定显式或最大版本。

如果没有看到每个依赖项的package.json,就很难进一步建议如何强制更新。

修改 为了帮助您确定哪些包使用哪些依赖项,您可以使用NPM的ls命令:https://docs.npmjs.com/cli/ls

例如,要查看哪些软件包正在使用Hoek: npm ls hoek

编辑2: 正如Ulysse BN正确指出的那样,如果你有NPM版本6或更高版本,你可以使用npm audit fix让NPM尝试为你修复漏洞。

答案 1 :(得分:3)

TLDR:使用npm i $PARENT_PKG_NAME更新父程序包。


诊断

npm audit将同时显示易受攻击的软件包(请注意,您将需要一个package-lock.json文件,因此您需要运行npm i)以及该软件包它是(如果适用)的依赖项。 (请注意,您还可以使用npm ls $CHILD_PKG_NAME来查看其父级依赖项。

尝试快速修复

npm audit fixnpm audit fix --force值得一试,但是有时需要手动完成此修复(请参见下文)。

手动修复

父包很可能已经修复了它们的依赖关系(您可以通过访问他们的GitHub并查看最近的提交进行验证,或者只是查看是否可以解决此问题),因此您可以运行npm i $PARENT_PKG_NAME它将更新您的package-lock.json。

验证修补程序

您现在可以通过运行npm audit并确保没有任何漏洞来验证它是否有效。提交您的更改,将其推送到GitHub,刷新您的通知/警报,它们应该消失了!

答案 2 :(得分:2)

如果您使用的是npm @ 6或更高版本,则可以使用npm audit fix解决安全问题。

答案 3 :(得分:1)

使用:

  

npm我ho

npm将安装hoek的最新版本,并且package.lock.json会更新。

答案 4 :(得分:0)

我遇到了这个问题,发现这是因为运行npm的服务器上具有旧版本的npm-package-lock.json仅受较新版本的支持。

答案 5 :(得分:0)

您尝试过以下方法:转到项目根目录,删除package-lock.json文件,node_modules.cache文件夹,然后删除npm install

答案 6 :(得分:0)

安装新的依赖项后,运行以下命令来更新package-lock.json文件:

npm update package-lock.json

答案 7 :(得分:0)

要修复易受攻击的npm软件包,只需使用以下命令:

npm audit fix

答案 8 :(得分:0)

手动编辑package-lock.json并将易受攻击的软件包版本更新为固定版本,然后使用

npm ci

这将通过首先忽略package-lock.json来根据package.json安装软件包。然后使用

npm audit fix
再次

,以确保它是否正确完成。如果这样做没有帮助,请使用其他给定的解决方案。

更多信息在这里:

https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

或此处:https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities

答案 9 :(得分:0)

您可以使用

显式更新此依赖项
npm update package_name --depth 6 

在你的情况下:

npm update hoek --depth 6