hoek 节点模块的 Github 潜在安全漏洞错误
Posted
技术标签:
【中文标题】hoek 节点模块的 Github 潜在安全漏洞错误【英文标题】:Github potential security vulnerability error for hoek node module 【发布时间】:2018-10-07 19:16:02 【问题描述】:今天 github 在我的 github 存储库中显示以下错误:
我们在您的一个设备中发现了潜在的安全漏洞 依赖关系。 ./package-lock.json 中定义的依赖项已知 安全漏洞,应该更新。
单击查看易受攻击的依赖项按钮时,会显示以下消息:
5.0.3 之前的hoek 节点模块遭受了修改 通过“合并”实现的假定不可变数据 (MAID) 漏洞
直到昨天它还没有显示这样的错误。我已经超过 5 天没有对此存储库进行任何推送。知道为什么会这样。
【问题讨论】:
很可能最近才发现 hoek 中的安全漏洞。这显然是因为 a) 你的项目使用了 hoek,b) 某些版本的 hoek 存在安全漏洞,以及 c) Github 现在认为这个漏洞非常重要,可以警告你。您已经好几天没有推送的事实完全无关紧要。 【参考方案1】:我用过:rm package-lock.json
&& npm update && npm install
。对我来说,这已将 hoek
更新为 4.2.1
,其中还包含修复 (per this comment.)
编辑:在另一个应用程序中,我运行rm package-lock.json
和npm i hoek && npm up && npm i && npm un hoek
或npm i hoek && npm un hoek && npm up && npm i
(不记得顺序),这更符合with this comment (from JamesSingleton)。
(rm package-lock.json
仅当它存在时才存在。)
编辑:在第三个应用程序中,我检查了npm outdated
,发现我必须将react-scripts-ts
从2.13.0
升级到2.15.1
。为此,我手动更新了package.json
,然后运行npm i
。完成后,hoek
更新为 4.2.1.
(专门针对那个保留/主要组件)。
编辑:我的 Zurb Foundation 6 站点解决方案:
我使用npm outdated
将我所有的包更新到了它们的主要版本。然后我跑了:
npm i hoek@latest --save && npm up hoek
npm i boom hawk sntp uncss gulp-uncss --save && npm up boom hawk sntp uncss gulp-uncss && npm un boom hawk sntp gulp-uncss uncss --save
有两个坚持; browser-sync : 2.23.7
和 node-sass : 4.9.0
,均为最新版本。没关系:GitHub 警告在提交后解决。
【讨论】:
我尝试了你提到的所有解决方案,但不幸的是它们都不适合我。 我的大多数应用程序也没有hoek
作为直接依赖项,但是将其安装为一个通过子包传播较新版本。 @YuvrajPatil 在您的package-lock.json
中,显示哪些子包仍依赖于旧的2.16.3
?
npm i hoek@latest --save && npm up hoek
为我工作。谢谢你,基思【参考方案2】:
我使用了 npm update hoek && npm install hoek 并且包更新到了 5.0.3。
之后,漏洞警报从我的 github 存储库中消失了。
【讨论】:
在我的第三个应用程序中,除了升级我的组件之外,我还必须npm i hoek && npm up
。这些依赖警告肯定会教我更多关于npm
的信息。
在我的情况下 hoek 不是直接依赖,因此它不起作用。【参考方案3】:
找到了解决方案here。
基本上在 git bash 中,cd
到你的项目文件夹,输入以下代码:
npm i hoek
npm uninstall hoek
npm update
npm install
然后
git add .
git commit -m 'update-hoek'
git push origin master
现在再次检查您的 GitHub 项目页面,警告应该会消失。
问候。
【讨论】:
在我的情况下 hoek 不是直接依赖,因此它不起作用。【参考方案4】:npm update
只有在易受攻击的包被声明为直接项目的依赖项时才能工作。但通常(如hoek
的情况)漏洞位于在您的子依赖树中的那些包中。
因为在我的例子中我决定不更新我项目的所有依赖项(通过删除和重建整个 package-lock.json
文件),我选择了以下内容(当然,还有更多耗时)方法:
package-lock.json
中查找易受攻击包的所有发生情况
跟踪依赖关系树以查找哪些***包导入它们
使用相同的次要版本卸载并重新安装那些***包
喜欢:
npm r package-1 package-2 && npm i package-1@^1.2.3 package-2@^1.2.3
只有当易受攻击的软件包被修复并发布并且消费软件包使用loose version number open to patch or minor versions 导入易受攻击的软件包时,这种方法才有效。
【讨论】:
node-sass
例如愿意导入旧的 hoek
版本以保持向后兼容性:( github.com/sass/node-sass/pull/2170【参考方案5】:
尝试在您的项目中运行npm install hoek@4.2.x
或npm install hoek@5
。
这会将所需的最新版本的 hoek 安装到 package.json 依赖项中,覆盖 package-lock.json 中的 hoek 版本。
【讨论】:
在我的情况下 hoek 不是直接依赖,因此它不起作用。 您能否提供更多关于您的代码的输入,以帮助更好地理解您的案例。【参考方案6】:以上都不适合我。我的 hoek 依赖在子树中很深。我首先做了npm ls hoek
,得到了这样的东西:
├── hoek@5.0.3
└─┬ watson-developer-cloud@2.42.0
├─┬ request@2.83.0
│ └─┬ hawk@6.0.2
│ ├─┬ boom@4.3.1
│ │ └── hoek@4.2.1 deduped
│ ├─┬ cryptiles@3.1.2
│ │ └─┬ boom@5.2.0
│ │ └── hoek@4.2.1 deduped
│ ├── hoek@4.2.1
│ └─┬ sntp@2.1.0
│ └── hoek@4.2.1 deduped
└─┬ solr-client@0.7.0
└─┬ request@2.81.0
└─┬ hawk@3.1.3
├─┬ boom@2.10.1
│ └── hoek@2.16.3 deduped
├── hoek@2.16.3
└─┬ sntp@1.0.9
└── hoek@2.16.3 deduped
然后我看到真正需要更新的是watson-developer-cloud
,因为那是在顶层使用 hoek 的内容。
然后我做了npm install watson-developer-cloud@latest
并解决了它。
【讨论】:
【参考方案7】:我尝试了以上所有方法,但对我不起作用,所以我继续检查我的根本原因。
我跑了npm ls hoek
,它给了我:
├─┬ fuse-box@3.3.0
│ └─┬ request@2.81.0
│ └─┬ hawk@3.1.3
│ ├─┬ boom@2.10.1
│ │ └── hoek@2.16.3
│ ├── hoek@2.16.3
│ └─┬ sntp@1.0.9
│ └── hoek@2.16.3
└── hoek@5.0.3
我注意到我的hawk
版本与npm hawk 上的版本不同,所以我运行了npm i hawk --save
。之后我再次运行正常的 git 命令:
git add .
git commit -m 'whatever_message'
git push
然后回到 Github 并修复了我的安全漏洞。
【讨论】:
【参考方案8】:是的,包 CVE-2018-3728 易受攻击。 4.2.1 和 5.0.3 之前的 hoek 版本容易受到原型污染。 受影响的hoek版本直到5.0.2版本,补救措施是更新到4.2.1、5.0.3或更高版本。 有关更多信息,您可以在此处查看修复拉取请求:https://github.com/hapijs/hoek/pull/231/commits/5aed1a8c4a3d55722d1c799f2368857bf418d6df
【讨论】:
以上是关于hoek 节点模块的 Github 潜在安全漏洞错误的主要内容,如果未能解决你的问题,请参考以下文章
修复 package-lock.json 中定义的依赖项中潜在安全漏洞的正确方法
使用 Github 包作为 npm 节点模块时的 Firebase 云功能部署问题