开源 Next.js 框架中有一个严重漏洞 (CVE-2025-29927),攻击者可以利用该漏洞绕过授权检查,并获得对他们无权访问的网页的未经授权的访问(例如,Web 应用程序的管理面板)。
Vercel 开发该流行框架的云平台即服务公司已发布安全更新修复该问题,并建议用户尽快升级。
Next.js 是一个全栈框架,通过帮助页面渲染、路由、性能和 SEO 优化等,使构建和发布 Web 应用程序变得更加容易。
Next.js 基于 React 构建,这是一个 JavaScript 库,用于通过单个可重用的组件构建 Web 用户界面,并且它们一起用于快速构建全栈、可投入生产的应用程序。
Next.js 使用自己的中间件来处理请求、保护路由、向响应添加安全标头,以及处理用户身份验证和用户重定向等内容(例如,基于地理位置、他们的会话/授权 cookie 等)。
CVE-2025-29927 允许攻击者通过向目标应用程序发送带有特制的x-middleware-subrequest标头的请求来绕过中间件安全控制。
如果我们将x-middleware-subrequest标头及其正确值添加到我们的请求中,中间件(无论其用途是什么)都将被完全忽略,请求将通过NextResponse.next()转发并完成其到达其原始目的地的旅程,而中间件不会对其产生任何影响。
标头及其值充当通用密钥,允许覆盖规则。
Vercel 的开发人员于 2025 年 3 月 14 日发布了临时补丁,并于几天后开始发布 Next.js 框架各个分支的新修复版本。
Next.js 被企业广泛使用,包括 Twitch、Spotify、Binance、Hulu、TikTok、OpenAI 等。
Showcase | Next.js by Vercel - The React Framework
Shodan 搜索引擎目前仅带有“X-Powered-By: Next.js”标头的服务就超过 300,000 个。
所有版本的 Next.js 都存在 CVE-2025-29927 漏洞。该问题已在 15.2.3、14.2.25、13.5.9 和 12.3.5 版本中修复。
根据 Next.js 维护人员的说法,该漏洞会影响使用中间件的自托管 Next.js 应用程序,尤其是如果它们仅依赖中间件进行身份验证或安全检查。
托管在 Vercel 和 Netlify 云平台上的应用程序不受影响,并且应用程序也不会部署为静态导出(因为不会执行中间件)。
框架维护人员建议:“如果无法修补到安全版本,建议您阻止包含x-middleware-subrequest标头的外部用户请求到达您的 Next.js 应用程序。”
ProjectDiscovery 就实施这一缓解措施的不同方法提供了建议。
CVE-2025-29927: Next.js Middleware Authorization Bypass - Technical Analysis — ProjectDiscovery Blog
Cloudflare为其托管的 WAF(Web 应用程序防火墙)客户提供了一条阻止此类请求的规则,并建议其他人如何创建自定义规则。
New Managed WAF rule for Next.js CVE-2025-29927. | Cloudflare Docs