CVE-2026-33320Dasel是一个用于查询、修改和转换数据结构的命令行工具及库。在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),攻击者通常需要通过文件上传或命令行参数等方式提交恶意数据,成功利用后将导致进程挂起或崩溃。