如何修复NPM包Tar的高危漏洞——任意文件覆盖,即使包已经更新?

40

我刚刚通过NPM安装了Flickity,并在运行npm audit之后获得了一个NPM Audit Security报告,指出我在tar包上有一个高漏洞问题,涉及任意文件重写,而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无法解决问题,因为漏洞需要手动检查。在more info链接中的建议是升级到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的版本。为什么会这样,为什么我必须手动修复它,我如何手动修复/升级这个tar包?

4个回答

20

5
请在您的“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"
      }
    }

2

7
npm 可能会覆盖这些设置,因此请使用 npm ci 从 package-lock.json 文件中加载您的设置,而不是从 package.json 文件中加载。 - nobi malik
你的评论对我帮助很大,其他回答都没有达到这个效果。谢谢! - catch22

1

来自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==",

delete the folder:

node_modules\npm
npm i
npm audit fix
npm audit

Tada!

1
不需要这样做。npm audit fix 就可以修复它,因为这个问题已经被解决并关闭了,你可以在这里看到 https://github.com/sass/node-sass/issues/2625(上面的批准答案)。 - Wilbert Caba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接