You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel升级至8后ansi-regex高危漏洞无法经npm更新修复

漏洞无法通过常规方案修复的核心原因

该高危漏洞并非来自Laravel项目自身引入的前端业务依赖,而是当前安装的NPM 8.12.1客户端内部内嵌的旧版依赖,漏洞路径明确指向node_modules/npm/node_modules/目录,属于NPM程序自身打包携带的依赖包。
常规的npm audit fix、删除lock文件与node_modules目录重装、单独重装相关依赖等操作,仅会处理项目自身依赖树内的包,无权修改NPM客户端自带的内嵌依赖,因此所有常规操作都无法消除该告警。

修复方案

方案1:升级NPM到安全版本(推荐优先选择,修复最彻底)

ansi-regex的正则表达式复杂度漏洞,在NPM 8.15.0及以上的8.x维护版本、所有9.x以上版本中均已完成修复,直接全局升级NPM即可解决:

  • 升级到最新稳定版,执行命令:
    npm install -g npm@latest
  • 如需保留8.x大版本、不跨大版本升级,执行命令:
    npm install -g npm@8
    升级完成后执行npm -v确认版本号≥8.15.0,重新运行npm audit即可看到对应告警消失。

方案2:环境限制无法升级NPM时,通过依赖强制覆盖规则修复

当前使用的NPM 8.12.1已支持overrides依赖覆盖规则,可在项目根目录的package.json文件中新增如下配置,强制所有依赖层级(包括NPM内嵌的依赖层级)的ansi-regex使用5.0.1及以上的无漏洞安全版本:

{
  // 原有package.json中的name、scripts、dependencies、devDependencies等配置保持不变
  "overrides": {
    "ansi-regex": "^5.0.1"
  }
}

配置添加完成后,删除项目下的node_modules文件夹与package-lock.json文件,重新执行npm install完成依赖安装即可。

注意事项
  • 不要随意使用npm audit fix --force强制升级所有依赖,Laravel 8默认配套的laravel-mix构建工具对依赖版本有严格兼容要求,盲目跨大版本升级依赖会导致前端构建命令执行失败。
  • 修复完成后可执行npm ls ansi-regex校验所有层级的ansi-regex版本,确认不存在3.0.0、4.0.0-4.1.0区间的旧版本即修复完成。

内容的提问来源于stack exchange,提问作者Santouryuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 00:24:23