如何修复Next.js项目中micromatch的ReDoS正则拒绝服务漏洞
修复Next.js项目中micromatch的ReDoS中度漏洞
我是JS开发新手,网站基于Next.js框架,我的package.json依赖如下:
"dependencies": { "@azure/communication-email": "1.0.0", "@azure/identity": "4.4.1", "@next/third-parties": "14.2.6", "@tailwindcss/line-clamp": "0.4.4", "@types/lodash": "4.17.7", "@types/node": "20.4.2", "@types/react": "18.3.4", "@types/react-dom": "18.3.0", "autoprefixer": "10.4.20", "date-fns": "3.6.0", "disposable-email-domains": "1.0.62", "dom-parser": "1.1.5", "dotenv": "16.4.5", "html-react-parser": "4.2.6", "lodash": "4.17.21", "next": "14.2.13", "postcss": "8.4.41", "react": "18.3.1", "react-datepicker": "7.3.0", "react-dom": "18.3.1", "sharp": "0.33.5", "tailwindcss": "3.4.10", "typescript": "5.5.4", "valibot": "0.38.0" },
运行yarn audit命令时,检测到12个与micromatch中Regular Expression Denial of Service (ReDoS)相关的中度漏洞,但直接依赖中无micromatch,以下是修复步骤:
步骤1:定位micromatch的依赖来源
首先运行命令找出哪个间接依赖引入了有漏洞的micromatch:
yarn why micromatch
这个命令会输出完整的依赖链,明确micromatch是被哪个包间接引用的。
步骤2:尝试更新父依赖包
如果找到的父包是你直接依赖中的某个工具库(比如tailwindcss、postcss),优先更新该父包到最新稳定版——多数情况下,新版本会自动替换掉存在漏洞的子依赖:
yarn upgrade <父包名>@latest
比如你可以尝试更新tailwindcss和postcss:
yarn upgrade tailwindcss@latest postcss@latest
步骤3:强制锁定micromatch的安全版本
如果更新父包无法解决问题,或者父包暂时没有修复版本,可以在package.json中添加resolutions字段,强制所有间接依赖使用已修复ReDoS漏洞的micromatch版本(建议选择4.0.8及以上版本):
"resolutions": { "micromatch": "4.0.8" }
添加后重新安装依赖:
yarn install
步骤4:验证修复结果
运行以下命令确认漏洞已修复:
yarn audit
也可以检查当前安装的micromatch版本是否正确:
yarn list micromatch
内容的提问来源于stack exchange,提问作者Bashabi
相关产品推荐
相关产品推荐

