Undici CVE-2026-22036: 无界解压链导致资源耗尽 — 补丁已发布
ReactNode.jsDevOps
发生了什么
- 在2026年1月14日,undici项目发布了一份安全通告(CVE-2026-22036 / GHSA-g9mf-h72j-4rw9):某些带有特制Content-Encoding头的HTTP响应可能会创建无界解压链,允许恶意服务器强迫客户端进行过度的CPU工作和内存分配,这些客户端会自动解压响应。补丁版本已发布。(github.com)
为什么全栈团队必须关注
- Undici是Node.js的事实上的高性能HTTP/1.1客户端,直接用于许多服务器端服务,并通过打包它的传递依赖和运行时间接使用。远程服务器(或任何你的服务所连接的上游)可以在盲目接受任意长的Content-Encoding链的HTTP客户端中触发资源耗尽——这对边缘服务器和调用第三方API的后端服务构成了可用性(DoS)风险。
- 该漏洞影响响应处理(可用性),而不是数据机密性。尽管如此,可用性事件会导致停机、扩展风暴和微服务图中的级联故障——因此,对于接受不受信任的上游响应的互联网面对和内部服务,补丁是紧急的。
受影响和修复版本(简短)
- 受影响:undici版本 < 6.23.0 和 7.0.0 <= 版本 < 7.18.2(请参阅通告以获取确切范围)。
- 修复:升级到6.23.0或7.18.2(或更高的7.x版本)。(github.com)
团队的实用高影响清单(现在该做什么)
-
快速清点
- 运行:npm/yarn/pnpm的依赖树检查以定位undici(直接和传递)。
- 示例检查:npm ls undici || pnpm why undici。
- 检查容器基础镜像和服务器运行时(某些Node构建会打包undici);检查你的Docker镜像是否包含vendored undici或包含它的Node镜像。
- 运行:npm/yarn/pnpm的依赖树检查以定位undici(直接和传递)。
-
在你控制的依赖项中升级
- 直接依赖:将undici提升到>= 7.18.2(如果必须保持在6.x,则为6.23.0),然后重新构建和重新部署。
- 传递依赖:优先更新引入undici的顶级包;如果不可能,使用包管理器覆盖(npm/yarn/pnpm)或解析规则在你的锁定文件中强制使用补丁的undici版本。
-
对于打包undici的Node运行时
- 检查你的Node.js发布说明或供应商构建以获取打包的undici版本。如果打包的undici存在漏洞,请将Node升级到供应商提供的安全补丁运行时(或遵循供应商指导)。
- 如果你无法立即升级Node,请使用下面描述的应用级缓解措施。
-
添加轻量级运行时缓解措施(深度防御)
- 如果你控制HTTP客户端代码,请添加解压/响应拦截器,拒绝长或不合理的Content-Encoding链(限制编码数量)。
- 在undici中,你可以添加一个拦截器来检查Content-Encoding头,并在解压运行之前拒绝或截断可疑链。
- 通过在HTTP响应上应用合理的响应大小限制和超时(例如,maxHeaderSize、响应超时)来限制内存占用和CPU使用。
-
CI、容器和编排
- 确保你的CI管道验证锁定文件,并在引入旧版undici时失败。
- 以受控的节奏(金丝雀 → 部署)重新构建容器镜像并重新部署关键服务,以避免在没有验证的情况下广泛推出破坏性更改。
-
检测和监控
- 添加或审查运行时指标:每请求CPU、请求延迟、在外发HTTP调用后的内存增长。
- 为与外发获取调用或特定上游主机相关的意外峰值添加警报。在事件窗口期间审计获取目标的日志可以帮助识别恶意上游。
为什么现在采取行动具有高价值
- 这是一个可用性/DoS向量,可以被任何你的代码调用的服务器远程触发。即使利用相对复杂,微服务架构中的爆炸半径也很大:攻击者或配置错误的上游可能会导致许多调用者持续高CPU/内存。
- 补丁过程简单(版本升级或简单的拦截器),并提供即时保护;结合监控和锁定文件卫生以避免回归。
一行修复
- 将undici升级到补丁版本(6.23.0或>=7.18.2),重新构建镜像并部署;如果你不能立即升级,请添加undici拦截器以拒绝长Content-Encoding链,并施加更严格的响应大小/时间限制。(github.com)
来源
- Undici安全通告:GHSA-g9mf-h72j-4rw9(CVE‑2026‑22036)。 (github.com)
来源
继续阅读
Chrome 143 更改 FedCM:结构化 ID 声明、更严格的客户端元数据和破坏性 API 更新
2026年1月31日Chrome 143(发布于 2026 年 1 月 12 日)更改了 FedCM 身份流:ID 声明令牌可以是结构化 JSON,强制执行 client_metadata 验证,并且多个 API 字段移动/重命名——在 Chrome 145 之前需要迁移。
React Router / Remix 修复服务器操作中的 CSRF 漏洞 (CVE-2026-22030)
2026年1月29日React Router 和 @remix-run/server-runtime 修复了影响服务器端操作处理程序和不稳定的 React 服务器操作的中等严重性 CSRF 问题——全栈团队现在必须检查和修补的内容。
GitHub Actions 1‑vCPU Linux Runner 现已普遍可用
2026年1月28日GitHub 在 GitHub Actions 中推出了一种新的低成本、容器化的 1‑vCPU Linux runner(ubuntu-slim)——全栈团队应该知道的内容和首要任务。