CVE-2026-32936CoreDNS 是一个链式插件的 DNS 服务器。在 1.14.3 版本之前,其 DNS-over-HTTPS (DoH) GET 请求路径存在安全缺陷。该路径在接收请求时,未对 `dns` 查询参数的大小进行验证,直接执行了 URL 解析、Base64 解码和 DNS 消息解包等高消耗操作。与 POST 路径不同,GET 路径缺乏类似 `http.MaxBytesReader` 的边界读取限制。未经身份验证的远程攻击者可利用此漏洞,通过发送特制的超大 DoH GET 请求,强制服务器消耗大量 CPU 资源和内存,增加垃圾回收压力,从而导致服务拒绝。
该漏洞的核心在于 CoreDNS 对 DoH 协议 GET 方法的实现逻辑不当。在标准 DoH 交互中,DNS 查询数据通常通过 POST 请求体或 GET 请求参数 `dns` 传递。CoreDNS 在处理 POST 请求时,正确使用了 `http.MaxBytesReader` 将读取限制在 65536 字节以内,防止了资源耗尽。然而,在处理 GET 请求时,代码直接解析 URL 查询字符串中的 `dns` 参数,并在没有任何长度检查的情况下,尝试对该参数值进行 Base64 解码和 DNS 报文解析。攻击者只需构造一个包含超长 Base64 字符串的 `dns` 参数(例如填充大量 'A' 字符),即可诱导服务器在拒绝请求之前进行昂贵的字符串处理和内存分配。由于处理这些数据的计算成本远高于发送请求的成本,攻击者可通过少量请求迅速耗尽服务器资源,造成拒绝服务。