IPBUF安全漏洞报告
English
CVE-2026-33320 CVSS 6.2 中危

CVE-2026-33320 Dasel YAML拒绝服务漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33320
漏洞类型
拒绝服务
CVSS评分
6.2 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Dasel

相关标签

拒绝服务DaselYAML资源耗尽递归

漏洞概述

Dasel是一个用于查询、修改和转换数据结构的命令行工具及库。在3.0.0至3.3.1之前的版本中,其YAML读取器存在严重安全缺陷。攻击者若能诱导目标处理特制的YAML数据,即可触发极端的CPU和内存消耗。该漏洞源于库自身的`UnmarshalYAML`实现,它在手动解析别名节点时递归跟随`yaml.Node.Alias`指针,且未设置任何扩展预算,从而绕过了go-yaml v4内置的别名扩展限制。这导致系统资源被耗尽,进而引发拒绝服务。目前版本3.3.2已修复此问题。

技术细节

该漏洞的技术原理在于Dasel库对YAML解析的自定义实现逻辑。Go语言的标准库go-yaml v4通常具有防止别名无限递归的保护机制,但Dasel为了实现特定的数据结构处理,重写了`UnmarshalYAML`方法。在该方法中,Dasel手动解析YAML别名节点,通过递归方式追踪`yaml.Node.Alias`指针。关键缺陷在于该递归过程缺乏深度的限制或操作预算,导致攻击者可以构造包含自引用或高度嵌套别名的恶意YAML文件。当Dasel尝试解析此类文件时,程序将陷入无限递归或极深的调用栈,迅速消耗所有可用的CPU时间和系统内存。由于攻击向量为本地(AV:L),攻击者通常需要通过文件上传或命令行参数等方式提交恶意数据,成功利用后将导致进程挂起或崩溃。

攻击链分析

STEP 1
1. 武器化
攻击者构造包含恶意递归别名的YAML文件,旨在绕过标准库的深度限制。
STEP 2
2. 投递
攻击者通过本地文件系统、命令行参数或应用程序上传接口将恶意YAML文件发送给目标系统。
STEP 3
3. 利用
Dasel工具尝试解析该YAML文件,其自定义的UnmarshalYAML函数开始递归解析别名节点。
STEP 4
4. 影响
由于缺乏递归限制,系统CPU和内存资源被迅速耗尽,导致服务拒绝响应或系统崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-33320 # This YAML snippet creates a recursive alias structure. # When processed by a vulnerable version of Dasel, it triggers # unbounded recursion, leading to high CPU and memory consumption. &anchor - *anchor

影响范围

Dasel 3.0.0 至 3.3.1

防御指南

临时缓解措施
如果无法立即升级,建议限制Dasel处理文件的来源,并在操作系统或容器层面为运行Dasel的进程设置严格的CPU时间与内存使用限额(如使用ulimit或cgroups),以防止资源耗尽影响宿主机稳定性。

参考链接

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