安装Electron 21.0.1后遇漏洞修复循环,如何彻底解决?
问题描述
安装Node 18.12.0与Electron 21.0.1后,出现3个中等漏洞警告。执行npm audit fix --force后变为1个高等级漏洞,再次执行该命令又回到3个中等漏洞,陷入循环。希望彻底修复所有漏洞。
附两次npm audit报告:
第一次npm audit报告
got <11.8.5
严重程度:中等
Got允许重定向至UNIX套接字
可通过npm audit fix --force修复,将安装electron@6.1.12(破坏性变更)
依赖链:electron → @electron/get → got3个中等严重程度漏洞
建议运行:npm audit fix --force
第二次npm audit报告
electron <=15.5.4
严重程度:高
包含多个Electron自身的安全漏洞(如渲染器未经权限访问蓝牙设备、上下文隔离绕过等)
可通过npm audit fix --force修复,将安装electron@21.2.0(破坏性变更)1个高严重程度漏洞
建议运行:npm audit fix --force
漏洞循环原因
- 第一次修复试图降级Electron到6.1.12,以此修复@electron/get依赖的got漏洞,但降级后的Electron版本存在多个高等级安全漏洞
- 第二次修复升级Electron到21.2.0解决自身高漏洞,但此时@electron/get仍依赖有漏洞的got版本,导致中等漏洞重现,形成循环
彻底修复方案
方案1:升级Electron到同大版本的最新稳定版+手动升级@electron/get
- 安装Electron 21系列的最新稳定版(该版本已修复自身高漏洞):
npm install electron@21.4.4 --save-dev
- 升级@electron/get到修复了got漏洞的版本(@electron/get@1.14.2及以上已将got升级至>=11.8.5):
npm install @electron/get@latest --save-dev
- 运行
npm audit验证漏洞是否全部修复
方案2:使用npm overrides强制指定安全的got版本(适用于npm 8+)
如果方案1无效,可在项目的package.json中添加overrides字段,强制将依赖链中的got版本替换为安全版本,同时保留Electron的高版本:
{ "overrides": { "got": "^11.8.5" } }
添加后执行npm install,再运行npm audit检查修复情况
注意事项
- Electron同大版本的小版本升级(如21.0.1→21.4.4)属于安全和bug修复更新,一般不会有破坏性变更,无需担心项目兼容性问题
- 若考虑升级到更高大版本的Electron(如22+),需提前核对项目代码是否兼容对应版本的API变更
内容的提问来源于stack exchange,提问作者clichekiller
相关产品推荐
相关产品推荐

