CVE-2026-33811该漏洞存在于Go语言的net包中,具体涉及cgo DNS解析器。当程序使用LookupCNAME函数处理DNS查询时,若接收到超长的CNAME响应数据,会触发C层面的内存双重释放错误。这将导致Go程序崩溃,造成拒绝服务。攻击者无需认证即可通过网络发起攻击,对系统可用性构成严重威胁。
漏洞源于Go标准库在处理DNS CNAME记录时的内存管理逻辑缺陷。当使用cgo作为DNS解析后端时,底层C代码在解析极长的CNAME响应时未能正确维护内存指针的生命周期。具体机制是:解析器在分配内存存储CNAME数据后,在处理超长数据的错误分支或特定逻辑中,错误地对该内存指针进行了两次释放操作。攻击者可通过控制恶意DNS服务器向受害Go程序发送特制的超长CNAME响应包。一旦目标程序调用LookupCNAME查询该域名,触发双重释放,导致堆破坏及程序崩溃。虽然主要影响为DoS,但堆破坏理论上存在被进一步利用的风险。