我最近将一个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 [email protected]
'request'包中包含'hawk',其中包含'hoek'。当我查看node_modules中的'request'包时,版本已更改。但是来自'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
最后,应用程序无法编译,所以我更换了包和锁定文件,现在我回到了开头。我真的想解决安全问题。如何摆脱讨厌的'hoek'漏洞?
你应该运行rm package-lock.json
&& npm update && npm install
,如果仍然没有解决你的问题,你可以继续运行npm ls hoek
,它应该给你:
├─┬ [email protected]
│ └─┬ [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
└── [email protected]
检查hawk
的版本与npm 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,应该修复安全漏洞。
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
依赖链意味着问题发生在开发依赖中。大多数安全问题主要适用于生产中使用的依赖项。此问题特定于测试和Karma。它几乎是不可能的威胁。
TL; DR:这不是漏洞。它必须被忽略。任何npm audit
报告都应通过健全性检查,然后才能做出任何修复措施。
我很耐心,他们解决了这个问题:
npm update karma@latest
应该管用。