天下漏洞,尽知其名
MEDIUM

NestJS 微服务深层嵌套对象拒绝服务漏洞

影响单条恶意消息即可使微服务进程崩溃

MEDIUM
暂无 CVSS 评分
AI 研判

NestJS 是一个用于构建可扩展 Node.js 服务端应用的框架。其微服务模块在 TCP 与 RabbitMQ 传输实现中存在拒绝服务问题。

影响范围

NestJS

受影响版本为 NestJS 11.2.4 之前及 12.0.2 之前的版本,涉及使用 TCP 或 RabbitMQ 传输的微服务。

漏洞详情

ServerTCP#handleMessage 与 ServerRMQ#handleMessage 会将客户端可控的非字符串 pattern 传入 JSON.stringify 以推导处理器查找键。当对象嵌套足够深时,JSON.stringify 抛出 RangeError: Maximum call stack size exceeded,未处理的 Promise 拒绝导致微服务进程终止。

利用条件与风险

攻击者只需向微服务发送一条构造的深层嵌套消息即可触发崩溃,无需认证,可造成服务不可用。

修复建议

升级至 NestJS 11.2.4 或 12.0.2 及以上版本;对消息 pattern 做类型与深度校验,并增加未处理异常的兜底处理。

原始情报

NestJS 11.2.4 与 12.0.2 之前版本中,单条含深层嵌套对象的消息可导致使用 TCP 或 RabbitMQ 传输的微服务崩溃。