摘要
CVE-2025-29927 影响部分使用 Next.js Middleware 执行鉴权的自托管应用。攻击者能够构造内部请求头,使框架误判 Middleware 已经执行,从而跳过相关逻辑。如果访问控制只存在于 Middleware 中,受保护路由可能被直接访问。
本报告聚焦防守侧判断:检查部署模式、确认是否把 Middleware 当作唯一授权边界,并尽快升级到官方修复版本。
根因
Next.js 使用内部请求头追踪 Middleware 递归调用。受影响版本没有在进入信任边界时充分隔离该内部状态,外部请求因此可以伪造框架本应自行维护的信息。
问题的关键不只是“一个可控请求头”,而是内部控制信号跨越了外部输入边界。应用层若把 Middleware 作为唯一授权点,后续路由就缺少第二道校验。
影响判断
风险通常需要同时满足以下条件:
- 应用运行在受影响的 Next.js 版本上;
- 使用 Middleware 执行认证或授权;
- 目标路由本身没有重复校验权限;
- 部署链路没有移除相关内部请求头。
仅使用静态导出,或由托管平台在边缘层消除该攻击面的场景,需要结合官方公告单独判断。
缓解与修复
- 按官方安全公告升级到对应主版本的已修复版本。
- 无法立即升级时,在反向代理或负载均衡层移除外部传入的
x-middleware-subrequest请求头。 - 把关键权限校验放到数据访问或业务处理层,不把 Middleware 作为唯一安全边界。
- 在升级后重新测试未认证访问、低权限访问和直接路由访问。