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.jsonnpm i hoek && npm up && npm i && npm un hoeknpm i hoek && npm un hoek && npm up && npm i(不记得顺序),这更符合with this comment (from JamesSingleton)。

rm package-lock.json 仅当它存在时才存在。)

编辑:在第三个应用程序中,我检查了npm outdated,发现我必须将react-scripts-ts2.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.7node-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.xnpm 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的八项安全实践

如何从 github 中删除节点模块(发布分支)

使用 Github 包作为 npm 节点模块时的 Firebase 云功能部署问题

如何在不包含节点模块文件夹的情况下将我的 React 项目上传到 GitHub [重复]

安全访问渲染器进程中基于节点的模块