今天 github 在我的 github 存储库中显示以下错误:
我们在您的一个依赖项中发现了潜在的安全漏洞。./package-lock.json 中定义的依赖项具有已知的安全漏洞,应该更新。
单击查看易受攻击的依赖项按钮时,显示以下消息:
5.0.3 之前的 hoek 节点模块遭受通过“合并”修改假定不可变数据 (MAID) 漏洞
直到昨天它还没有显示这样的错误。我已经超过 5 天没有对此存储库进行任何推送。知道为什么会这样。
今天 github 在我的 github 存储库中显示以下错误:
我们在您的一个依赖项中发现了潜在的安全漏洞。./package-lock.json 中定义的依赖项具有已知的安全漏洞,应该更新。
单击查看易受攻击的依赖项按钮时,显示以下消息:
5.0.3 之前的 hoek 节点模块遭受通过“合并”修改假定不可变数据 (MAID) 漏洞
直到昨天它还没有显示这样的错误。我已经超过 5 天没有对此存储库进行任何推送。知道为什么会这样。
我用过:rm package-lock.json
&& npm update && npm install
。对我来说,这已更新hoek
为4.2.1
,其中还包含修复(根据此评论。)
编辑:在另一个应用程序中,我跑rm package-lock.json
了npm i hoek && npm up && npm i && npm un hoek
or npm i hoek && npm un hoek && npm up && npm i
(不记得顺序),这更符合这个评论(来自 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 警告。
我使用了 npm update hoek && npm install hoek 并将软件包更新到 5.0.3。
之后,漏洞警报从我的 github Repo 中消失了。
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
这种方法只有在易受攻击的软件包被修复和发布并且消费软件包导入易受攻击的软件包时才有效,该易受攻击的版本号松散,对补丁或次要版本开放。
以上都不适合我。我的 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
,这解决了它。
尝试运行npm install hoek@4.2.x
或npm install hoek@5
在您的项目中。
这会将所需的最新版本的 hoek 安装到 package.json 依赖项中,覆盖 package-lock.json 中的 hoek 版本。
在这里找到了解决方案。
基本上在 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 项目页面,警告应该会消失。
问候。
我尝试了以上所有方法,但对我不起作用,所以我继续检查我的根本原因。
我跑了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
我注意到我的版本与npm hawkhawk
上的版本相对,所以我跑了。之后我再次运行正常的 git 命令:npm i hawk --save
git add .
git commit -m 'whatever_message'
git push
然后回到 Github,我的安全漏洞得到了修复。
是的,包 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