如何摆脱“hook”漏洞
Posted
技术标签:
【中文标题】如何摆脱“hook”漏洞【英文标题】:How to get rid of the ‘hoek’ vulnerabilities 【发布时间】:2018-10-31 09:16:56 【问题描述】:我最近将一个 Angular CLI 5 应用程序推送到 GitHub,它显示以下内容:
We found a potential security vulnerability in one of your dependencies.
A dependency defined in net-incident/package-lock.json has known security vulnerabilities and should be updated.
Dependencies defined in net-incident/package-lock.json 816
hapijs / hoek Known security vulnerability in 2.16.3
我查看了“npm audit”的输出并执行了各种更新,包括以下内容(未建议):
npm install --save-dev request@2.86.0
“request”包包含“hawk”,其中包含“hoek”。当我查看 node_modules 中的“请求”包时,版本已更改。但是来自“npm audit”的以下两个更新似乎没有做任何事情:
npm update fsevents --depth 4 npm update stringstream --depth 5
我还剩下以下内容:
[!] 33 vulnerabilities found [12201 packages audited]
Severity: 5 Low | 24 Moderate | 4 High
Run `npm audit` for more detail
许多漏洞如下:
Moderate Prototype pollution
Package hoek
Patched in > 4.2.0 < 5.0.0 || >= 5.0.3
Dependency of karma
Path karma > log4js > loggly > request > hawk > boom > hoek
More info https://nodesecurity.io/advisories/566
最后,应用程序无法编译,所以我更换了包和锁定文件,现在我又回到了开头。我真的很想解决安全问题。如何摆脱讨厌的“hook”漏洞?
【问题讨论】:
这让我成功了一半:Running suggested command doesnt fix npm vulnerability,但我仍然遇到 Hoek 7 漏洞问题。 剩下的问题似乎与 karma 相关。追踪业力问题here #2994 我发布了对我有用的解决方案***.com/questions/50759164/npm-audit-fixes 我觉得#2994快要被清理了,所以我想我会等一下。 【参考方案1】:你应该运行rm package-lock.json
&& npm update && npm install
,如果这仍然不能解决你的问题,你可以继续运行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 hawk上的版本检查hawk
的版本,如果不相符,运行npm i hawk --save
或npm i hoek@latest --save
,然后你也应该运行:npm i karma@latest --save
,然后npm audit
,然后我再次运行了正常的 git 命令:
git add .
git commit -m 'whatever_message'
git push
然后你可以回到 Github,安全漏洞应该已经修复了。
【讨论】:
但是如果我克隆你的 repo 并运行npm i
,是否会为我安装 hoek 的易受攻击版本?或者这个解决方案是否消除了这个问题。我已经采取了与您在上面概述的类似的步骤,但发现任何新的npm install
都会立即带来问题。
注意:运行npm i
或npm install
只会安装package.json
中指定的所有版本的依赖项,无论您要克隆什么。
在这种情况下,不会因为 package.json 设置而出现 hoek 问题,它之所以存在,是因为它是 node_modules 深处的依赖层。如果 Karma 需要某个版本的 Request,这需要不安全的 hawk 版本(或其他),那么每次运行 npm i
时,都会安装这些特定版本。我只是花了一些时间并尝试按照您概述的步骤进行操作,但漏洞仍然存在。如果 package-lock.json 被编辑,是否会导致更改在安装过程中持续存在?
按照这个解决方案,你也可以手动添加hoek: ^5.0.3
到你的package.json
并运行npm install,然后推送【参考方案2】:
This answer 解决了类似的hoek
问题,this answer 详细解释了非漏洞审计报告。
npm audit
报告可能的问题。没有必要它们是应该解决的真正问题。
像karma > log4js > loggly > request > hawk > boom > hoek
这样的嵌套依赖可能需要在依赖链中派生多个包,以防它必须被修复。
Prototype pollution
诊断表示代码异味。原型污染气味的原因是它可能导致安全问题。这就是它被标记为Moderate
的原因。由于它的工作方式,它不太可能在hoek
包中引起任何安全风险,无论包的使用方式如何(这也很重要)。
另外,karma > log4js > loggly > request > hawk > boom > hoek
依赖链表示问题出现在开发依赖中。大多数安全问题主要适用于生产中使用的依赖项。这个问题是特定于测试和业力的。这几乎不可能是威胁。
TL;DR:这不是漏洞。它必须被忽略。任何npm audit
报告都应通过健全性检查,然后才能进行任何修复。
【讨论】:
这很有帮助。 很高兴它有帮助。此外,此类报告会产生很多噪音,但目前无法让npm audit
对开发依赖项保持沉默,github.com/npm/npm/issues/20564
我认为这并不是一件太可怕的事情,因为它提醒我们大家更深入地思考我们在保持软件安全方面的作用。【参考方案3】:
我很耐心,他们解决了问题:
npm update karma@latest
应该可以。
【讨论】:
以上是关于如何摆脱“hook”漏洞的主要内容,如果未能解决你的问题,请参考以下文章