Next.js 开源 Web 开发框架中发现了一个严重漏洞,可能允许攻击者绕过授权检查。
该漏洞的编号为 CVE-2025-29927,它使攻击者无需经过关键的安全检查即可发送到达目标路径的请求。
Next.js 是一个流行的 React 框架, npm 上每周下载量超过 900 万次。它用于构建全栈 Web 应用程序,并包含用于身份验证和授权的中间件组件。
前端和全栈开发人员使用它来通过 React 构建 Web 应用程序。一些比较著名的公司在其网站/应用程序中使用它,包括 TikTok、Twitch、Hulu、Netflix、Uber 和 Nike。
绕过授权
在 Next.js 中,中间件组件在请求到达应用程序路由系统之前运行,并用于身份验证、授权、日志记录、错误处理、重定向用户、应用地理封锁或速率限制等目的。
为了防止中间件重新触发自身的无限循环,Next.js 使用了一个名为“x-middleware-subrequest”的标头来指示是否应应用中间件功能。
负责处理传入请求的“runMiddleware”函数会检索该标头。如果它检测到“x-middleware-subrequest”标头具有特定值,则会绕过整个中间件执行链并将请求转发到其目的地。
攻击者可以手动发送包含正确值的标头的请求,从而绕过保护机制。
据 发现此漏洞并发表技术文章的研究人员[url=https://x.com/zhero___]Allam Rachid[/url]和 Allam Yasser (inzo_) 称, “标头及其值充当了通用密钥,允许覆盖规则。”
该漏洞影响 15.2.3、14.2.25、13.5.9 和 12.3.5 之前的所有 Next.js 版本。建议用户尽快升级到较新的版本,因为利用该安全问题的技术细节是公开的。
Next.js 的安全公告 澄清,CVE-2025-29927 仅影响使用“next start”和“output: standalone”的自托管版本。托管在 Vercel 和
Nerlify 上或部署为静态导出的 Next.js 应用不受影响。
同样受到影响的还有使用中间件进行授权或安全检查且应用程序后期没有验证的环境。
如果当时无法修补,建议阻止包含“x-middleware-subrequest header”的外部用户请求。