如何摆脱“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 &amp;&amp; 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 --savenpm 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 inpm 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 &gt; log4js &gt; loggly &gt; request &gt; hawk &gt; boom &gt; hoek 这样的嵌套依赖可能需要在依赖链中派生多个包,以防它必须被修复。

Prototype pollution 诊断表示代码异味。原型污染气味的原因是它可能导致安全问题。这就是它被标记为Moderate 的原因。由于它的工作方式,它不太可能在hoek 包中引起任何安全风险,无论包的使用方式如何(这也很重要)。

另外,karma &gt; log4js &gt; loggly &gt; request &gt; hawk &gt; boom &gt; hoek依赖链表示问题出现在开发依赖中。大多数安全问题主要适用于生产中使用的依赖项。这个问题是特定于测试和业力的。这几乎不可能是威胁。

TL;DR:这不是漏洞。它必须被忽略。任何npm audit 报告都应通过健全性检查,然后才能进行任何修复。

【讨论】:

这很有帮助。 很高兴它有帮助。此外,此类报告会产生很多噪音,但目前无法让 npm audit 对开发依赖项保持沉默,github.com/npm/npm/issues/20564 我认为这并不是一件太可怕的事情,因为它提醒我们大家更深入地思考我们在保持软件安全方面的作用。【参考方案3】:

我很耐心,他们解决了问题:

npm update karma@latest

应该可以。

【讨论】:

以上是关于如何摆脱“hook”漏洞的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱盲目的sql注入?

如何防止自己的APP被Hook

SQL注入漏洞之联合查询

分享网站漏洞检测与如何修复网站逻辑漏洞

如何寻找安全漏洞之——黑客们如何挖掘漏洞

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞