修复 Webpack Dev Middleware 安全风险 | AI生成和翻译

Home 2026.02

Question: 从 webpack-dev-middleware 5.3.3 更新到 5.3.4 是安全修复更新吗?由于 @angular-devkit/build-angular 使用了该 package,我们能否使用 overrides 而不是将 Angular 14 升级到更高版本?

Answer:

是的,从 webpack-dev-middleware 5.3.35.3.4 的更新专门是一个 security fix 版本。

它修复了 CVE-2024-29180,这是一个 path traversal vulnerability(路径遍历漏洞,也称为由于 URL 验证不足导致的文件泄漏问题)。5.3.3 及以下版本存在漏洞,而 5.3.4(以及其他主要分支中的相应补丁:6.1.2 和 7.1.0)通过在处理 URL 之前对其进行正确的 unescaping 和 normalizing 修复了该问题。这可以防止攻击者通过向 development server 发送精心构造的请求,访问开发者机器上的任意本地文件(如果 dev server 暴露在公共接口上,或者通过 DNS rebinding / 恶意链接可达,则尤其危险)。

在 Angular 14 项目中,@angular-devkit/build-angular(由 ng serve 和基于 webpack 的 dev server 使用)依赖于较旧版本的 webpack-dev-middleware(通常在当时的 5.x 范围内,包括 5.3.3 或更早的漏洞版本)。这通常会在 npm audit 中触发高危漏洞警告。

你可以通过使用 npm overrides(或 yarn/pnpm 的等效功能)在项目中强制将 webpack-dev-middleware 指定为 5.3.4,从而避免升级整个 Angular 版本(从 14 → 15/16 等)。对于在旧版 Angular/CLI/Vue CLI 设置中解决此特定 CVE,这是一种常见且有效的 workaround。

package.json 示例(使用 npm overrides):

{
  "overrides": {
    "@angular-devkit/build-angular": {
      "webpack-dev-middleware": "5.3.4"
    }
  }
}

添加此配置后:

这应该会引入 5.3.4 版本,而不会破坏 Angular 14 的 build/dev 设置(因为 5.3.4 补丁在 5.x 系列中是向下兼容的)。许多开发者已成功在类似的受依赖限制的项目中使用此方法。

注意:Overrides 是一个很好的临时修复手段,但为了长期维护,请考虑迁移到较新的 Angular 版本(使用更新的 dependencies)或切换到现代的 esbuild-based builder(在较新的 Angular 版本中可用)。

References:


Back Donate