【漏洞复现】Next.js 中间件认证绕过漏洞(CVE-2025-29927)漏洞复现

embedded/2025/3/25 20:45:26/

❤️博客主页 iknow181
🔥系列专栏 网络安全、 Python、JavaSE、JavaWeb、CCNP
🎉欢迎大家点赞👍收藏⭐评论✍


在这里插入图片描述

0x00 免责声明

本文所述漏洞复现方法仅供安全研究及授权测试使用;任何个人/组织须在合法合规前提下实施,严禁用于非法目的。作者不对任何滥用行为及后果负责,如发现新漏洞请及时联系厂商并遵循漏洞披露规则。

0x01 组件介绍

Next.js 是由 Vercel 开发的基于 React 的现代 Web 应用框架,具备前后端一体的开发能力,提供服务器端渲染、静态网站生成和集成路由系统等功能。

fofa语法:app="NEXT.JS"

0x02 漏洞描述

近日,Next.js 官方披露了一个严重级别的安全漏洞(CVE-2025-29927),该漏洞影响了大量使用 Next.js 中间件实现授权功能的应用程序。该漏洞源于Next.js使用中间件进行身份验证和授权的过程存在漏洞,该漏洞允许攻击者通过操作 x-middleware-subrequest 请求头来绕过基于中间件的安全控制,从而可能获得对受保护资源和敏感数据的未授权访问。

该漏洞的根本原因在于 Next.js 中间件处理子请求的机制存在缺陷:

  1. 内部子请求标识:当中间件需要向内部路由发出请求时(例如获取数据或验证信息),Next.js 会自动添加x-middleware-subrequest头,以标识这是一个内部请求,防止中间件陷入无限循环。
  2. 来源验证缺失:漏洞出现的关键点是 Next.js 没有正确验证这个头的来源。当外部请求携带此头时,中间件错误地将其识别为内部子请求。
  3. 中间件执行逻辑:当检测到x-middleware-subrequest头时,Next.js 会跳过对该请求的中间件执行,直接将请求传递给目标路由或 API。
  4. 授权绕过实现:攻击者只需在请求中添加特殊的头部信息,就能使中间件的授权检查被完全跳过,直接访问受保护资源。

0x03 影响版本

15.* <= Next.js <15.2.3

14.* <= Next.js <14.2.25

11.1.4 <= Next.js <= 13.5.6

0x04 漏洞复现

搭建靶场

GitHub - t3tra-dev/cve-2025-29927-demo: Next.js における認可バイパスの脆弱性を再現するデモです。

使用 nvm

启动

漏洞验证

(1)正常访问,无法绕过权限认证

直接访问protected 是需要认证的

(2)在请求头中加入特殊头部信息,即可直接访问到需要权限的页面

0x05 防护措施

  • 临时缓解措施

拦截访问Nextjs应用中HTTP请求头包含的x-middleware-subrequest字段。

如果暂时没法升级,可以在中间件里手动拦截这个恶意请求

export function middleware(request: NextRequest) {  if (request.headers.has('x-middleware-subrequest')) {    return new Response('Unauthorized', { status: 401 });  
}  
return NextResponse.next();
}
  • 修复建议

目前,官方已发布修复建议,建议受影响的用户尽快升级至安全版本:

https://github.com/vercel/next.js/releases

参考文章:

【已复现】Next.js middleware 权限绕过漏洞(CVE-2025-29927)

知名React框架Next.js被爆出重大漏洞!黑客无需登录即可绕过权限访问你的网站

在这里插入图片描述


http://www.ppmy.cn/embedded/176618.html

相关文章

浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例

目录 1. 环境准备 1.1 MySQL配置 1.2 部署Canal Server 2. Spring Boot项目配置 2.1 添加依赖 2.2 配置参数 3. 实现Canal监听与同步 3.1 Canal客户端监听 3.2 同步到Redis 3.3 同步到Elasticsearch 4. 注意事项 在Spring Boot中通过Canal监听MySQL数据库变更并同步…

「0基础学爬虫」爬虫基础之抓包工具的使用

抓包工具概述 抓包工具&#xff0c;顾名思义&#xff0c;就是抓取网络数据包信息的工具。抓包工具最初主要应用于测试工作中&#xff0c;通过抓包工具查看网络数据包&#xff0c;并进行分析&#xff0c;来定位数据传输中的问题。随着不断发展&#xff0c;抓包工具的功能不断拓…

【论文阅读】大型语言模型能否实现软件漏洞的检测与修复?

这篇文章翻译自 CAN LARGE LANGUAGE MODELS FIND AND FIX VULNERABLE SOFTWARE? 大型语言模型能否实现软件漏洞的检测与修复&#xff1f; 先说说结论和一些有意思的发现&#xff0c;以及这篇文章最重要的一个点&#xff1a; 那肯定是可以的&#xff0c; 此前实验已证实GPT-…

水星(MERCURY)监控初始化的恢复和转码方法

水星(MERCURY)的安防监控恢复了很多&#xff0c;其嵌入式文件系统也一直迭代更新。做为数据恢复从业者每天处理最多的就是恢复数据&#xff0c;但是有的时候业务的需要我们不仅仅恢复出数据&#xff0c;还需要能够转码成通用的MP4类文件并要求画面和声音实现“同步”。 故障存…

Ubuntu22.04通过DKMS包安装Intel WiFi系列适配器(网卡驱动)

下载驱动包 访问 backport-iwlwifi-dkmshttps://launchpad.net/ubuntu/source/backport-iwlwifi-dkms 网站&#xff0c;找到适用于Ubuntu 22.04的update版本&#xff08;如backport-iwlwifi-dkms_xxxx_all.deb&#xff09;&#xff0c;下载至本地。 安装驱动 在下载目录中执行以…

除了setup的表达方法,vue3还有什么表达方法

在 Vue 3 中&#xff0c;除了使用 setup 函数的组合式 API 这种表达方法外&#xff0c;还可以使用选项式 API 和 <script setup> 语法糖&#xff0c;下面分别介绍这几种方式&#xff1a; 1. 选项式 API&#xff08;Options API&#xff09; 选项式 API 是 Vue 2 中就有…

JVM的组成--运行时数据区

JVM的组成 1、类加载器&#xff08;ClassLoader&#xff09; 类加载器负责将字节码文件从文件系统中加载到JVM中&#xff0c;分为&#xff1a;加载、链接&#xff08;验证、准备、解析&#xff09;、和初始化三个阶段 2、运行时数据区 运行时数据区包括&#xff1a;程序计数…

【算法】十大排序算法(含时间复杂度、核心思想)

以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结&#xff0c;适用于面试快速回顾&#xff1a;排序算法对比表 排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想冒泡排序O(n)O(n)O(n)O(1)稳定相邻元素交换&#xff0c;大数沉底…