当包是最新的时,如何修复具有任意文件覆盖高漏洞的 NPM 包 Tar?

Posted

技术标签:

【中文标题】当包是最新的时,如何修复具有任意文件覆盖高漏洞的 NPM 包 Tar?【英文标题】:How to fix NPM package Tar, with high vulnerability about Arbitrary File Overwrite, when package is up to date? 【发布时间】:2019-09-02 10:12:06 【问题描述】:

我刚刚从 NPM 安装了 Flickity,并在运行 npm audit 后获得了 NPM 审计安全报告,指出我在包 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 并没有解决问题,因为该漏洞需要人工审查。 更多信息 链接上的建议说升级到版本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 versionv4.4.2 下的唯一一个。为什么它会这样工作,为什么我必须手动修复它以及如何手动修复/升级这个 tar 包?

【问题讨论】:

【参考方案1】:

问题正在 gitgub 页面上跟踪

https://github.com/sass/node-sass/issues/2625

【讨论】:

【参考方案2】:

请更新“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"
      
    

【讨论】:

【参考方案3】:

在您的 package-lock.jason 中将节点的 tar 更新到以下 (v 4.4.8):

"版本": "4.4.8", “已解决”:“https://registry.npmjs.org/tar/-/tar-4.4.8.tgz”

【讨论】:

npm 可能会覆盖这些设置,因此:使用 npm ci 从 package-lock.jason 文件而不是 package.jason 加载您的设置 你的评论对我来说是没有其他答案的。谢谢!【参考方案4】:

来自SASS github issue: 打开 package-lock.json 找到“焦油” 应该是这样的:

"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 audit fix 将修复它,因为这个问题已经解决并关闭,你可以在这里看到github.com/sass/node-sass/issues/2625(上面批准的答案)

以上是关于当包是最新的时,如何修复具有任意文件覆盖高漏洞的 NPM 包 Tar?的主要内容,如果未能解决你的问题,请参考以下文章

网站漏洞修复案例之Discuz!3.4最新版本

dedecms漏洞修复大全含任意文件上传漏洞与注入漏洞

dedecms漏洞修复大全含任意文件上传漏洞与注入漏洞

最新Zip压缩文件漏洞,黑客可以触发目录遍历攻击

最新WordPress漏洞,黑客可轻松控制您的网站

WordPress删除任意文件/执行任意代码安全漏洞临时修复方法