Express.js 发布 2026 年 8 月安全更新


Express 团队发布了 hbs 4.3.0、multer 2.3.0 和 morgan 1.12.0,修复了涉及模板渲染、多部分解析和访问日志的六个漏洞。
警告
建议将 hbs、multer 和 morgan 升级到最新版本以保障应用安全。如果项目中包含 package-lock.json,可运行以下命令更新依赖:
npm update hbs multer morgan已修复的漏洞如下:
- hbs 模板引擎中的 CVE-2026-16231(高危)
- multer 中间件中的 CVE-2026-77037(高危)
- multer 中间件中的 CVE-2026-77078(高危)
- multer 中间件中的 CVE-2026-82333(高危)
- morgan 中间件中的 CVE-2026-15603(中危)
- multer 中间件中的 CVE-2026-77063(低危)
hbs 模板引擎中的 CVE-2026-16231(高危)
hbs 的 >= 2.1.0, <= 4.2.1 版本易受跨站脚本攻击影响,攻击向量为通过 registerAsyncHelper 注册的辅助函数
hbs 对异步辅助函数(async helpers)输出的转义处理未像同步辅助函数那样严谨。因此,通过 registerAsyncHelper 注册且返回攻击者可操控数据的辅助函数,会未经中和直接将数据写入渲染页面。使用异步辅助函数渲染用户输入衍生值的应用暴露于跨站脚本攻击风险之下,导致在受害者浏览器中执行脚本。4.3.0 版本中的修复方案使异步辅助函数输出的转义机制与同步辅助函数保持一致。
受影响版本:>= 2.1.0, <= 4.2.1
修复版本:>= 4.3.0
更多详情请参阅 GHSA-rg36-rxv9-2m9q。
multer 中间件中的 CVE-2026-77037(高危)
multer 版本 2.2.0 存在拒绝服务漏洞,中止上传时会导致文件描述符泄漏
当基于磁盘的上传在写入流结束前被中止或截断时,multer 会从上传目录中移除可见文件,但未关闭底层的写入文件描述符。能够访问使用内置磁盘存储的上传路由的远程攻击者,可以发送重复中止或格式错误的 multipart 上传,每次操作都会泄漏一个文件描述符并保留磁盘块,直到进程退出,从而导致资源耗尽和拒绝服务。2.3.0 版本的修复在源异常终止时关闭目标写入流,并推迟清理操作直到流关闭。
受影响版本:= 2.2.0
修复版本:>= 2.3.0
更多详情请参阅 GHSA-qfvm-cv95-jqjf。
multer 中间件中的 CVE-2026-77078(高危)
multer 版本 < 2.3.0 存在拒绝服务漏洞,可通过构造特殊的 multipart 字段名触发
一个包含两个特殊构造文本字段名的小型 multipart 请求,会导致 multer 的字段解析器中引发未捕获的 RangeError,进而终止 Node.js 进程。第一个字段使用非常大的数值数组索引来分配最大长度的稀疏数组,第二个字段则超出该长度,导致在 append-field 依赖项中抛出异常,且未被 multer 捕获。单个未认证请求即可导致服务器崩溃,因此这是一个可远程触发的拒绝服务漏洞。2.3.0 版本的修复处理了解析器错误,拒绝该请求而不导致崩溃。
受影响版本:< 2.3.0
修复版本:>= 2.3.0
更多详情请见 GHSA-wc9g-mqfw-jrwm。
multer 中间件中的 CVE-2026-82333(高危)
multer < 2.3.0 版本存在因字段名中过大的数组索引导致的拒绝服务漏洞
当 multipart 请求的第一个字段使用一个非常大的数字数组索引时,multer 会分配一个最大长度的稀疏数组;随后第二个字段使用非数字键时,append-field 依赖内部会触发对整个数组的遍历,从而阻塞事件循环,使进程无法处理其他请求。一个请求就足以让 worker 失去响应,因此这属于可远程触发的拒绝服务攻击。multer 2.3.0 新增了可选的 limits.fieldArrayIndexLimit 选项,可拒绝过大的索引。建议升级到 2.3.0,并将 limits.fieldArrayIndexLimit 设置为应用所需的最大数组索引。
受影响版本:< 2.3.0
修复版本:>= 2.3.0
更多详情请见 GHSA-535w-7cp7-47q4。
morgan 中间件中的 CVE-2026-15603(中危)
morgan < 1.12.0 版本存在因未转义的 Unicode 行分隔符导致的日志伪造漏洞
morgan 在转义日志字段时,未能处理 Unicode 行分隔符 U+0085、U+2028 和 U+2029。未经认证的远程客户端可以将这些字符注入攻击者可控的日志 token 中,例如通过 remote-user token 暴露的 Basic auth 用户名,使支持 Unicode 的下游日志处理程序把一条请求日志拆分成多条逻辑记录。这是一个日志伪造问题,也是 CVE-2026-5078 的后续修复——后者仅处理了 ASCII 控制字符。1.12.0 的修复将转义范围扩展到了这些 Unicode 行分隔符。
受影响版本:< 1.12.0
已修复版本:>= 1.12.0
更多细节,请参阅 GHSA-jxfw-x594-9x9m。
multer 中间件中的 CVE-2026-77063(低危)
multer 版本 < 2.3.0 存在通过 fileFilter 异步竞争条件绕过文件大小限制漏洞
当应用程序同时使用异步 fileFilter 和 fileSize 限制时,multer 文件流处理中的竞争条件可能导致超过配置大小限制的文件绕过该限制拒绝机制。由于底层 multipart 解析器仍会在达到大小限制时截断流,因此该漏洞的影响有限,属于绕过限制拒绝而非不可控的资源消耗。2.3.0 版本的修复方法是在异步过滤器执行之前注册大小限制处理逻辑。
受影响版本:< 2.3.0
已修复版本:>= 2.3.0
更多细节,请参阅 GHSA-qvfw-j98x-7q72。
建议将 hbs、multer 和 morgan 升级至最新版本,以保障应用安全。