CVE-2026-33814Go语言HTTP/2组件存在严重的拒绝服务漏洞。当处理HTTP/2 SETTINGS帧时,若服务端接收到值为0的SETTINGS_MAX_FRAME_SIZE参数,传输层将错误地进入写入CONTINUATION帧的无限循环。该漏洞攻击复杂度低且无需用户交互,攻击者可远程利用此缺陷耗尽服务器CPU资源,导致服务不可用。
该漏洞源于Go语言标准库(或x/net)的HTTP/2传输层实现中,对SETTINGS_MAX_FRAME_SIZE参数的校验逻辑存在缺陷。根据HTTP/2协议规范(RFC 7540),SETTINGS_MAX_FRAME_SIZE的值必须介于16384(2^14)到16777215(2^24-1)之间。然而,Go的实现未正确处理该参数被设置为0的异常边界情况。当攻击者向Go HTTP/2服务器发送一个包含SETTINGS_MAX_FRAME_SIZE=0的SETTINGS帧时,受害端在后续尝试发送HEADERS帧(通常包含响应头)时会触发逻辑错误。由于最大帧大小被限制为0,程序试图将头部数据拆分为多个帧发送,但每次尝试写入的数据长度均为0,导致陷入无限循环,不断生成CONTINUATION帧却无法发送有效载荷。这种死锁会持续占用CPU时间片,导致工作进程挂起,无法处理新的请求,从而实现拒绝服务攻击。