CVE-2026-35480go-ipld-prime是一款实现了IPLD规范接口的Go语言库。在0.22.0版本之前,其DAG-CBOR解码器存在安全漏洞。解码器直接使用CBOR头部声明的集合大小作为Go语言映射和列表的预分配提示,且未对这些大小提示进行限制或将其计入分配预算。攻击者可利用该漏洞通过构造恶意的较小载荷,导致应用程序分配过量内存,从而引发拒绝服务攻击。
该漏洞的根源在于go-ipld-prime库中DAG-CBOR解码器的内存分配逻辑。当解码器解析CBOR格式的数据时,会读取数据头部声明的数组或Map大小,并将该值直接传递给Go语言的make函数用于预分配内存空间。由于代码中缺乏对预设大小的上限校验机制,且未将此预分配操作纳入整体内存预算管理,攻击者可以精心构造一个包含超大集合大小声明的恶意CBOR数据包。尽管该数据包的实际体积可能很小,但解码器在解析时会尝试申请巨大的内存空间。这会导致服务器内存资源瞬间耗尽,触发OOM Killer终止进程,造成服务拒绝。此漏洞利用无需认证且无需用户交互,攻击门槛较低。