Next.js 授权绕过漏洞 CVE-2025-29927:你需要知道的一切

Next.js 的哪些版本受到影响?

Next.js 15.x – 从版本 15.0.0 到 15.2.2(含)。

Next.js 14.x – 从版本 14.0.0 到 14.2.24(含)。

早期的 Next.js 版本 - 从版本 11.1.4 到版本 13.5.6。

CVE-2025-29927 的攻击场景

为了充分利用此漏洞,受害的 Next.js 服务器必须使用 Next.js 中间件。这包括包含一个middleware.jsmiddleware.ts文件( 对于旧版本的 Next.js,_middleware.js则为 或)。该文件定义并导出函数,该函数用于保存收到每个 HTTP 请求时运行的逻辑。_middleware.ts``middleware

授权绕过

这是 CVE-2025-29927 最有可能的利用场景。

当受害者 Next.js 服务器使用中间件功能执行授权(并且底层应用程序不使用任何其他授权层)时,这种情况是相关的。

img

未利用 CVE-2025-29927 的授权中间件场景

img

存在 CVE-2025-29927 漏洞的授权中间件场景

通过缓存投毒实现拒绝服务

Next.js 中间件还可以帮助网站本地化。例如,该中间件可以根据用户位置自动重定向用户,例如,/en为英语用户或/fr法语用户添加重定向。如果有人利用 CVE-2025-29927 漏洞并绕过执行这些重定向的中间件,他们将无法进入本地化页面,而是进入网站根目录 ( /),而开发人员从未为其构建过页面。结果如何?根据配置,会出现 404 错误或 500 服务器错误。

如果网站使用 CDN 或其他缓存层,这些错误响应可能会被存储并提供给未来的访问者。一旦被缓存,合法用户可能会在全球范围内看到损坏的页面。这会造成自身造成的中断,无需更改任何代码即可严重影响可用性。

img

未利用 CVE-2025-29927 的重定向器中间件场景

img

存在 CVE-2025-29927 漏洞的重定向器中间件场景

了解 Next.js 中间件

Next.js 中间件是 Next.js v12 中引入的一项强大功能,允许开发者在请求完成之前执行代码。中间件在边缘运行,比传统的服务器端代码更靠近用户,可以修改响应标头、重写或重定向请求,最重要的是,可以实现身份验证和授权检查。

Next.js 中的中间件在渲染之前运行,并且可以通过匹配器配置配置为在特定路径上执行。

Next.js 中间件的一些示例用例如下:

  • 验证身份验证令牌
  • 实施基于角色的访问控制
  • 重定向未经身份验证的用户

执行身份验证的典型 Next.js 中间件实现可能如下所示:

 import {
    NextResponse } from 'next/server'
 import type {
    NextRequest } from 'next/server'

 export function middleware(request: NextRequest) {
   
   // Get the user token from the cookies
   const token = request.cookies.get('token').value
  
   // Validate the user is authenticated
   const isAuthenticated = validateToken(token)
  
   <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值