如何更新作为peer dependency的tar,规避CVE-2020-8244缓冲区过度读取漏洞?
解决tar@6.1.11缓冲区过度读取漏洞的方案
方案一:用npm overrides强制锁定安全版本(npm 8.3及以上版本支持)
- 在项目根目录的
package.json中添加overrides配置,强制所有嵌套依赖使用tar@6.1.12:
{ "overrides": { "tar": "6.1.12" } }
- 执行
npm install,npm会自动替换依赖树中所有实例的tar版本为指定的安全版本,同时处理依赖去重。
方案二:升级上游依赖(更彻底的长期方案)
从你的依赖树可以看到,tar是通过cacache(来自copy-webpack-plugin)和node-gyp(来自node-sass)引入的:
- 升级
copy-webpack-plugin:执行npm update copy-webpack-plugin,新版本的该插件大概率已经依赖了包含tar安全版本的cacache。 - 升级
node-sass:执行npm update node-sass,更高版本的node-sass可能已经更新了make-fetch-happen和node-gyp的依赖,间接修复tar版本问题。 - 升级完成后,再次运行
npm list tar确认所有tar实例都已升级到6.1.12。
验证修复效果
运行npm list tar,如果输出中所有tar的版本均为6.1.12,说明修复成功。之后重新执行AquaSec安全扫描,确认漏洞已消除。
内容的提问来源于stack exchange,提问作者Federick J
相关产品推荐
相关产品推荐

