#优质博文 #前端 #安全
以 0.0001 美分的价格干掉 Next.js 服务器
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author Alex Browne
以 0.0001 美分的价格干掉 Next.js 服务器
AI 摘要:Harmony Intelligence 团队报告发现 Next.js 自托管版本存在严重的拒绝服务(DoS)漏洞,攻击者仅需一个精心构造的 HTTP 请求即可导致服务器内存被耗尽而崩溃。漏洞由 AI AppSec Agent 在测试期间意外发现,已由 Vercel 于 2025 年 10 月修复。防御建议是尽快升级至 Next.js 15.5.5 或以上版本,并在生产环境使用可限制请求大小的反向代理,因为仅靠请求频率限制并不能防御此类攻击。
[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 漏洞概述
• 漏洞类型:拒绝服务 (DoS),通过发送大体积的 HTTP 请求流导致服务器内存耗尽并崩溃。
• 受影响范围:所有带有中间件的自托管 Next.js 服务器(Vercel 托管的不受影响)。
• 受影响版本:≤15.5.4、14.x、13.x 等旧版本。
2. 发现经过
• 漏洞在测试 AI AppSec Agent 能否独立识别已知认证绕过问题(CVE-2025-29927)时意外被触发。
• AI 代理可访问源代码并在安全沙盒中运行,对应用执行自动化渗透探索。
• 意外发现 Next.js 官方源码中 cloneBodyStream 函数复制无大小限制的请求体,从而导致内存占用过高。
3. 技术细节
• 漏洞根源在于 body-stream.ts 中的 cloneBodyStream:函数会将整个请求流读入内存。
• 攻击者仅需持续发送数据流片段即可造成服务器崩溃,资源消耗极低。
• 修复补丁通过在内存缓冲区超过 10MB 时抛出异常来限制流大小。
4. 影响与安全评级
• 全球 300 万个活跃 Next.js 部署中约 55% 为自托管环境(企业约 80%)。
• 初始漏洞报告时 Vercel 尚未在文档中明确推荐使用反向代理限制请求大小。
• 推荐 CVSS v3.1 评分 7.5(高危),依据类似 Node.js 漏洞 (CVE-2018-12121) 的评估逻辑。
5. 缓解措施(Mitigation)
• 推荐立即升级至 Next.js 15.5.5 或 16.0.0 及以上版本。
• 配置诸如 nginx 的反向代理来限制请求体大小,例如默认 client_max_body_size = 1MB。
• 确保应用服务器不对外直接暴露,全部流量应经过代理层。
• 仅靠应用层的 rate limit、bodyParser.sizeLimit 或 express-rate-limit 等代码级限制无效,因为漏洞触发点在中间件执行前。
6. 信息披露时间线
• 2025-08-07:私下通知 Vercel 并持续每周跟进。
• 2025-09-23:Vercel 第一次回应。
• 2025-10-13:Vercel 发布补丁 (v15.5.5)。
• 2025-11-26:公开披露与缓解方案发布。
author Alex Browne