关于mocha依赖npm debug高漏洞的修复方案咨询
针对npm debug@4.3.4高风险ReDoS漏洞的修复方案建议
近期使用Checkmarx One进行安全扫描时,检测到项目间接依赖的debug包(版本4.3.4,当前最新版)存在高风险漏洞:
- CWE编号:CWE-1333(低效正则表达式复杂度)
- 漏洞描述:
debug包的enable函数接受用户输入的正则表达式但未做转义处理,攻击者可注入恶意正则表达式发起ReDoS(正则表达式拒绝服务)攻击,导致用户浏览器无法正常服务。此漏洞与CVE-2017-16137为不同问题。
该debug包并非项目直接安装使用,而是以下依赖的间接依赖:
- mocha @ 10.2.0
- mocha-junit-reporter @ 2.2.0
- supertest @ 6.3.3
- hygen @ 6.2.11
推荐修复方案:
等待上游依赖更新
- 密切关注上述四个依赖包的官方更新动态,一旦它们将内部依赖的
debug版本升级到已修复漏洞的版本,直接执行npm update或yarn upgrade命令更新这些包即可。 - 可通过
npm ls debug或yarn list debug命令查看当前项目依赖链中debug的版本分布,确认是否已有子依赖提供了修复后的版本。
- 密切关注上述四个依赖包的官方更新动态,一旦它们将内部依赖的
手动强制升级debug版本
- 在项目的
package.json中添加resolutions字段(npm需配合npm-force-resolutions工具,yarn、pnpm原生支持),强制所有依赖链中的debug包升级到已修复漏洞的版本(需确认debug官方已发布对应安全补丁版,如^4.3.5):"resolutions": { "debug": "^4.3.5" } - 执行对应命令重新生成依赖树:
- npm用户:先安装依赖
npm install -D npm-force-resolutions,在package.json的scripts中添加"preinstall": "npm-force-resolutions",再执行npm install - yarn用户:直接执行
yarn install - pnpm用户:执行
pnpm install --resolution-strategy highest
- npm用户:先安装依赖
- 在项目的
临时规避措施(无法立即升级时)
- 检查项目代码中是否存在直接调用
debug.enable的逻辑,若有则对传入的正则表达式参数做严格校验和转义处理,禁止使用用户可控的输入值作为该函数的参数。 - 前端项目可通过Webpack等构建工具的tree-shaking功能,移除未被使用的
debug代码分支,缩小潜在攻击面。
- 检查项目代码中是否存在直接调用
内容的提问来源于stack exchange,提问作者Kathrine Breboneria
相关产品推荐
相关产品推荐

