我已经完成了npm审核,并显示我有一个高漏洞。那就是它给我的信息:
┌───────────────┬─────────────────────────────────────────────────┐
│ High │ Arbitrary File Overwrite │
├───────────────┼─────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼─────────────────────────────────────────────────┤
│ Patched in │ >=4.4.2 │
├───────────────┼─────────────────────────────────────────────────┤
│ Dependency of │ node-sass-chokidar │
├───────────────┼─────────────────────────────────────────────────┤
│ Path │ node-sass-chokidar > node-sass > node-gyp > tar │
├───────────────┼─────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/803 |
└───────────────┴─────────────────────────────────────────────────┘
我查看了node-gyp软件包的package-lock.json,发现tar软件包的版本仍为2.0.0,但是我需要4.4.8:
"node-gyp": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
"integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
"requires": {
"fstream": "^1.0.0",
"glob": "^7.0.3",
"graceful-fs": "^4.1.2",
"mkdirp": "^0.5.0",
"nopt": "2 || 3",
"npmlog": "0 || 1 || 2 || 3 || 4",
"osenv": "0",
"request": "^2.87.0",
"rimraf": "2",
"semver": "~5.3.0",
"tar": "^2.0.0",
"which": "1"
},
"dependencies": {
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"requires": {
"abbrev": "1"
}
},
"semver": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
},
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
}
}
}
}
然后我搜索了相同的问题,因此找到了answer。然后我做到了
npm cache verify
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g
ncu -u
npm i
,但是tar软件包的版本仍然保持不变。我还尝试使用npm install tar@4.4.8
直接更新它,但只是将tar放在我的package.json中。我也尝试过npm update和npm过时了。一切看起来都是最新的。
答案 0 :(得分:1)
好吧,由于某种原因,它称为package-lock.json,该版本将始终保持不变。
如果要更新软件包,则需要删除该文件,或将其重命名为package.json,然后执行更新。
答案 1 :(得分:1)
node-gyp@3.8.0
取决于"tar@^2.0.0
,将tar
更新为4.4.8不会影响node-gyp
。
如this answer中所述,漏洞报告应通过健全性检查,并带有一丝盐味。如果嵌套的程序包存在漏洞,则所有依赖于此程序包的程序包都应更新,这可能很复杂。另一方面,如果以不引起安全问题的方式使用易受攻击的程序包,则不是漏洞。
node-sass-chokidar
是开发包,tar
的嵌套依赖关系不太可能导致项目的安全问题。报告的“漏洞”无法轻松修复。忽略报告。如果还没有问题(实际上是there is),请在node-sass
和node-sass-chokidar
存储库中打开它。