npm高危漏洞修复求助:find-babel-config依赖JSON5存在漏洞
解决npm检测到的JSON5高危漏洞(避免降级expo到1.0.0)
问题背景
npm检测到一处高危安全漏洞,根源是find-babel-config依赖了低于1.0.2版本的JSON5,存在原型污染风险。官方建议的npm audit fix --force会强制安装expo@1.0.0这个老旧版本,属于破坏性变更,无法执行。当前Node版本为v18.14.1,已尝试重新安装/更新npm、删除node_modules和package-lock.json、清理npm缓存、更新expo等操作,问题仍未解决。
npm审计报告(翻译后)
# npm 审计报告 json5 <1.0.2 严重程度:高危 JSON5解析方法存在原型污染风险 可通过 `npm audit fix --force` 修复 执行后将安装 expo@1.0.0,属于破坏性变更 node_modules/babel-preset-expo/node_modules/json5 find-babel-config <=1.2.0 依赖存在漏洞的json5版本 node_modules/babel-preset-expo/node_modules/find-babel-config babel-plugin-module-resolver 2.3.0 - 4.1.0 依赖存在漏洞的find-babel-config版本 node_modules/babel-preset-expo/node_modules/babel-plugin-module-resolver babel-preset-expo * 依赖存在漏洞的babel-plugin-module-resolver版本 node_modules/babel-preset-expo expo >=14.0.0 依赖存在漏洞的babel-preset-expo版本 node_modules/expo
解决方案
方法1:使用npm overrides强制升级依赖(推荐)
在项目根目录的package.json中添加overrides字段,强制指定安全版本的依赖,绕过依赖链限制:
{ "overrides": { "json5": "^1.0.2", "find-babel-config": "^2.0.0" } }
添加完成后执行:
npm install
此方法无需降级expo,直接修复底层依赖的漏洞版本。
方法2:升级babel-preset-expo到最新兼容版本
安装babel-preset-expo的最新版本,确认其已修复依赖链问题:
npm install babel-preset-expo@latest --save-dev
随后清理并重新安装依赖:
rm -rf node_modules package-lock.json npm install
若最新版babel-preset-expo已更新babel-plugin-module-resolver和find-babel-config的依赖,即可解决漏洞。
方法3:临时忽略漏洞(仅应急使用)
若以上方法暂时无法生效,且确认当前环境无漏洞利用风险,可临时忽略该漏洞:
执行命令临时调整审计级别:
npm audit --audit-level=moderate
或在package.json中添加永久忽略配置:
{ "npm": { "audit": { "ignore": [ "GHSA-9c47-m6qq-7p4h" ] } } }
注意:此方法仅隐藏漏洞提示,未实际修复风险,不建议长期使用。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

