如何修复 NPM 包 Tar,当包是最新的时,存在关于任意文件覆盖的高漏洞?
How to fix NPM package Tar, with high vulnerability about Arbitrary File Overwrite, when package is up to date?
我刚刚从 NPM 安装了 Flickity,在 运行 npm audit
之后收到了一份 NPM 审计安全报告,指出我有一个关于 任意文件覆盖 [=33= 的高漏洞问题] 在包 tar 上,它是 node-sass 的依赖项,如您在此处所见:
High......................... Arbitrary File Overwrite
Package...................... tar
Patched in................... >=4.4.2
Dependency of................ node-sass [dev]
Path......................... node-sass > node-gyp > tar
More info.................... https://npmjs.com/advisories/803
运行 npm audit fix
没有解决问题,因为漏洞需要人工审核。 更多信息 link 中的建议说要升级到版本 4.4.2
或更高版本。当我 运行 npm show tar version
我意识到我是 运行 版本 4.4.8
所以我很困惑。我去了 package-lock.json
并意识到 node-gyp,它是 node-sass 的依赖,正在使用 tar 版本^2.0.0
这让我感到困惑,因为我已经看到许多不同的 tar 版本作为其他包的依赖项,但是这个 node-sass > node-gyp > tar version
是唯一的 v4.4.2
。为什么它会这样工作,为什么我必须手动修复它以及我如何手动 fix/upgrade 这个 tar 包?
正在 github 页面上跟踪该问题
在您的包中-lock.jason 将节点的 tar 更新到以下 (v 4.4.8):
"version": "4.4.8",
"resolved":“https://registry.npmjs.org/tar/-/tar-4.4.8.tgz”
请更新 "package-lock.json" 文件中 "tar" 的值。并验证,运行“[npm audit][1]
”。
"tar": {
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
"integrity": "value",
"dev": true,
"optional": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
}
}
来自SASS github issue:
打开 package-lock.json
查找 "tar"
应该是这样的:
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
将这 3 行替换为:
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
"integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
删除文件夹:
node_modules\npm
npm i
npm audit fix
npm audit
多田!
我刚刚从 NPM 安装了 Flickity,在 运行 npm audit
之后收到了一份 NPM 审计安全报告,指出我有一个关于 任意文件覆盖 [=33= 的高漏洞问题] 在包 tar 上,它是 node-sass 的依赖项,如您在此处所见:
High......................... Arbitrary File Overwrite
Package...................... tar
Patched in................... >=4.4.2
Dependency of................ node-sass [dev]
Path......................... node-sass > node-gyp > tar
More info.................... https://npmjs.com/advisories/803
运行 npm audit fix
没有解决问题,因为漏洞需要人工审核。 更多信息 link 中的建议说要升级到版本 4.4.2
或更高版本。当我 运行 npm show tar version
我意识到我是 运行 版本 4.4.8
所以我很困惑。我去了 package-lock.json
并意识到 node-gyp,它是 node-sass 的依赖,正在使用 tar 版本^2.0.0
这让我感到困惑,因为我已经看到许多不同的 tar 版本作为其他包的依赖项,但是这个 node-sass > node-gyp > tar version
是唯一的 v4.4.2
。为什么它会这样工作,为什么我必须手动修复它以及我如何手动 fix/upgrade 这个 tar 包?
正在 github 页面上跟踪该问题
在您的包中-lock.jason 将节点的 tar 更新到以下 (v 4.4.8):
"version": "4.4.8", "resolved":“https://registry.npmjs.org/tar/-/tar-4.4.8.tgz”
请更新 "package-lock.json" 文件中 "tar" 的值。并验证,运行“[npm audit][1]
”。
"tar": {
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
"integrity": "value",
"dev": true,
"optional": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
}
}
来自SASS github issue: 打开 package-lock.json 查找 "tar" 应该是这样的:
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
将这 3 行替换为:
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
"integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
删除文件夹:
node_modules\npm
npm i
npm audit fix
npm audit
多田!