semver正则表达式拒绝服务漏洞求助(已尝试多种修复手段)
解决Expo依赖链中的semver正则拒绝服务漏洞
问题背景
你碰到的是semver 7.0.0-7.5.1版本的正则表达式拒绝服务漏洞,该漏洞藏在@expo/image-utils的嵌套依赖里,进而牵连@expo/cli、@expo/prebuild-config以及expo 50.0.0-alpha.0至50.0.14版本。常规的npm audit fix、重装依赖、手动改package-lock.json都搞不定嵌套依赖的版本锁定问题。
可行解决方案
1. 用npm Overrides强制升级嵌套semver版本
npm 8.3及以上版本支持overrides字段,能强制指定嵌套依赖的版本,绕开依赖链的版本限制。在项目根目录的package.json里加以下配置:
{ "overrides": { "@expo/image-utils>semver": "^7.5.2" } }
加完后执行:
npm install
这会强制把@expo/image-utils依赖的semver升级到安全版本(7.5.2及以上),之后跑npm audit验证漏洞是否修复。
2. 升级Expo核心依赖到修复版
Expo后续版本已经修复了@expo/image-utils的semver依赖问题,直接把相关依赖更到最新稳定版:
npm install expo@latest @expo/cli@latest @expo/prebuild-config@latest
升级完重新装依赖,就能彻底清掉漏洞依赖。
3. 清理npm缓存确保依赖全更新
要是上面的方法还不行,先清缓存再重装:
npm cache clean --force rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者Jutey
相关产品推荐
相关产品推荐

