`npm audit`在npm中发现了漏洞?

时间:2018-06-12 18:35:58

标签: node.js npm

我开始习惯于在我的大多数项目中定期检查npm audit,如果我发现我的某个依赖项存在漏洞,我会尝试为它们修补它(通过拉取请求)或报告问题(通过GitHub问题)

但是我最近安装了一个包,发现了一些非常古怪的行为:

$ > npm install --save fingerprintjs2

+ fingerprintjs2@1.8.0
added 564 packages from 744 contributors and audited 4667 packages in 6.341s
found 9 vulnerabilities (2 low, 5 moderate, 2 high)
  run `npm audit fix` to fix them, or `npm audit` for details
$ > npm audit

                       === npm audit security report ===

┌──────────────────────────────────────────────────────────────────────────────┐
│                                Manual Review                                 │
│            Some vulnerabilities require your attention to resolve            │
│                                                                              │
│         Visit https://go.npm.me/audit-guide for additional guidance          │
└──────────────────────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Out-of-bounds Read                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=0.0.6                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > libcipm > npm-lifecycle > node-gyp >  │
│               │ request > stringstream                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/664                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Out-of-bounds Read                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=0.0.6                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > node-gyp > request > stringstream     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/664                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Out-of-bounds Read                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=0.0.6                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > npm-lifecycle > node-gyp > request >  │
│               │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/664                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Out-of-bounds Read                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=0.0.6                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > npm-registry-client > request >       │
│               │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/664                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Out-of-bounds Read                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ stringstream                                                 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=0.0.6                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > request > stringstream                │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/664                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High          │ Denial of Service                                            │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ http-proxy-agent                                             │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=2.1.0                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > npm-profile > make-fetch-happen >     │
│               │ http-proxy-agent                                             │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/607                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High          │ Denial of Service                                            │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ https-proxy-agent                                            │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=2.2.0                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > npm-profile > make-fetch-happen >     │
│               │ https-proxy-agent                                            │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/593                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=4.17.5                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > cli-table2 > lodash                   │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/577                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=4.17.5                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ fingerprintjs2                                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ fingerprintjs2 > npm > npm-audit-report > cli-table2 >       │
│               │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/577                       │
└───────────────┴──────────────────────────────────────────────────────────────┘
found 9 vulnerabilities (2 low, 5 moderate, 2 high) in 4667 scanned packages
  9 vulnerabilities require manual review. See the full report for details.

乍一看,似乎fingerprintjs2可能有很多不良依赖关系,但仔细观察特定的依赖关系 - 据报道所有漏洞都在npm内部! 即可。更糟糕的是,它们似乎基本上都是相同的3个依赖

字符串流

  • fingerprintjs2 > npm > libcipm > npm-lifecycle > node-gyp > request > stringstream
  • fingerprintjs2 > npm > node-gyp > request > stringstream
  • fingerprintjs2 > npm > npm-lifecycle > node-gyp > request > stringstream
  • fingerprintjs2 > npm > npm-registry-client > request > stringstream
  • fingerprintjs2 > npm > request > stringstream

HTTP代理剂

  • fingerprintjs2 > npm > npm-profile > make-fetch-happen > http-proxy-agent
  • fingerprintjs2 > npm > npm-profile > make-fetch-happen > https-proxy-agent

lodash

  • fingerprintjs2 > npm > cli-table2 > lodash
  • fingerprintjs2 > npm > npm-audit-report > cli-table2 > lodash

我没有从其他软件包的 任何 中获得这种奇怪的行为(我已经安装了vuevuex,{{ 1}},vue-routerjquerybootstrapfontawesomesha1express,....只需 的东西 - 但我从未见过这个)所以我知道它必须以某种方式与FIngerprintJS相关

查看他们的package.json文件以获取潜在客户,他们实际上有无依赖,并且只有少数devDependencies(所有构建工具):

gulp

这里发生了什么?

我尝试升级NodeJS(现在版本为{ "name": "fingerprintjs2", "version": "1.8.0", "description": "Modern & flexible browser fingerprinting library", "repository": { "type": "git", "url": "https://github.com/Valve/fingerprintjs2.git" }, "keywords": [ "browser", "identification", "fingerprint", "fingerprinting", "privacy" ], "author": "Valentin Vasilyev", "license": "MIT", "bugs": { "url": "https://github.com/Valve/fingerprintjs2/issues" }, "homepage": "https://github.com/Valve/fingerprintjs2", "main": "dist/fingerprint2.min.js", "devDependencies": { "gulp": "^3.9.1", "gulp-rename": "^1.2.2", "gulp-standard": "^10.1.1", "gulp-uglify": "^3.0.0", "standard": "^10.0.3" }, "scripts": { "test": "specs/phantomjs.runner.sh specs/spec_runner.html", "gulp": "gulp", "lint": "standard --fix" }, "standard": { "ignore": [ "specs/lib", "specs/phantomjs-testrunner.js" ] } } )和NPM(现在版本为v10.4.0),但它没有帮助。

我唯一的线索如下:

6.1.0

出于某种原因,即使我安装了$ > npm ls npm test-audit@1.0.0 /home/sbarnett/src/test-audit └─┬ fingerprintjs2@1.8.0 └── npm@5.10.0 ,FingerprintJS似乎也需要NPM版本5.10.0。我不知道为什么它需要这个版本,因为在package.json文件中没有提及

更新

无论这个奇怪的错误是什么原因,当我开始一个新项目并安装6.1.0时,它不再发生 - 所以我相信fingerprintjs2的一个依赖关系被更新并纠正了问题< / p>

0 个答案:

没有答案