NextJS 超瓜皮漏洞,赶紧升级!

111 天前
 Oxonomy
Downloading @next/swc-darwin-arm64@15.2.3: 41.23 MB/41.23 MB, done

dependencies:
- next 15.1.0
+ next 15.2.3

Done in 4m 38.6s

NextJS auth middware 漏洞

漏洞概述

漏洞编号:CVE-2025-29927 / GHSA-f82v-jwr5-mffw 漏洞类型:授权绕过( CWE-285 ) 严重级别:严重( Critical ) CVSS 评分:9.1/10.0 影响版本:

11.1.4 至 13.5.6 14.0 至 14.2.24 15.0 至 15.2.2

漏洞简述

此漏洞允许攻击者通过添加特定 HTTP 请求头( x-middleware-subrequest )完全绕过在 Next.js 中间件中实现的授权检查,从而获取对受保护资源的未授权访问。由于许多 Next.js 应用仅在中间件层实现授权逻辑,这使得该漏洞的影响范围极广且危害严重。

虽然 Vercel 修了但是没有完全修,self host 的 nextjs 用户还是会遇到问题

Cloudflare 和 Vercel CEO 直接推特中门互狙。。。

6485 次点击
所在节点    信息安全
21 条回复
xavierchow
111 天前
升级是一方面,另一方面也是个提醒,健壮的 app 应该避免只在一个 layer 做认证和安全保护
https://strobes.co/blog/understanding-next-js-vulnerability/#Key_Security_Lessons_From_Nextjs_Vulnerability
lizhenda
111 天前
牛批啊 ...
ragnaroks
111 天前
nextjs 的 middleware 设计真的文明用语,第一次见只能有一个 middleware 的框架
flyqie
110 天前
cat
110 天前
@ragnaroks 而且是只为 edge runtime 设计的 middleware ,就离谱,github 上有几个 pr 和 discussions 吵这事
guhuisec
110 天前
吓死人
NessajCN
110 天前
看来我最初的预感是正确的
最开始用 nextjs 我就觉得这 middleware 不靠谱
最后还是把 auth 步骤都放到 layout 里
麻烦是麻烦了点,每个 path 都要写一遍同样的 auth 逻辑,
但把 cookie 都自己处理了就不必担心这种漏洞了
qweruiop
110 天前
twitter 都炸开了。。。也是醉了。。。
Xheldon
110 天前
没记错的话 middleware 中的 req/res 和别的接口 req/res 对象还有差异,我是懒得看文档了解什么差异了(毕竟 server 端的 req/res 和客户端的 req/res 也有差异我也懒得看。。。),然后鉴权写到单独的文件里面在各个接口都引了一遍。。。完美规避问题[doge]
kk2syc
110 天前
@ragnaroks 我倒是觉得这个设计很不错,模块化中间件,强制使用单个中间件文件,简化配置、防止潜在冲突、优化性能

[官方文档]
Note: While only one middleware.ts file is supported per project, you can still organize your middleware logic modularly. Break out middleware functionalities into separate .ts or .js files and import them into your main middleware.ts file. This allows for cleaner management of route-specific middleware, aggregated in the middleware.ts for centralized control. By enforcing a single middleware file, it simplifies configuration, prevents potential conflicts, and optimizes performance by avoiding multiple middleware layers.
0x676e67
110 天前
不如发推特链接看看
zhwguest
110 天前
这世界就是一个草台班子....
Zenyet
110 天前
@0x676e67 同,想吃瓜
zealotxxxx
110 天前
可以追溯到 3 年前的版本了。估计已经产生很多停在这些版本又不维护的项目。乐
jimages
110 天前
从来不用 middleware 鉴权,主要是不用的页面,有的需要鉴权,有的不需要鉴权,如果按不同页面写鉴权策略写到一个 middleware 逻辑太离散了,所以直接写到 page 里面了,都是每个页面都得粘贴一下有点麻烦。
CHTuring
110 天前
KellyAlsa
110 天前
目前用 nextjs 写网站都只用 output: export 生成静态页面,应该遇不到这种问题
shunia
110 天前
23 号开始吵架,今天才开始道歉,哈哈哈哈
kamilic
110 天前
@ragnaroks 确实傻逼,用到我吐血
crackidz
110 天前
只写页面,解决问题=.=

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1120797

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX