Go 1.26.6 / 1.25.13 修复 10 个安全问题:net/url 的 O(n²) 与 TLS 1.3 KeyUpdate 派生循环
来源:oss-security 2026-08-13。Go 1.26.6 与 Go 1.25.13 发布,共包含 10 个安全修复。下面按涉及的包整理。
net/url:大量 .. 段触发 O(n²)
resolvePath 处理含大量父目录(..)段的相对路径时,原实现走的是字符串转换加缓冲重写,时间和内存都是 O(n²)。修复改为字节缓冲加按索引回溯,消除了二次复杂度。
- CVE:CVE-2026-56860
- issue:https://go.dev/issue/80494
- CVSS:5.9(MEDIUM)
- 触发路径:攻击者发送带大量
..段的 URL 路径即可打到 Go 服务,url.URL.ResolveReference等路径解析都会经过这段逻辑。
crypto/tls:恶意客户端可无限触发密钥派生
此前 KeyUpdate 等握手消息被一律当成 state-advancing 处理。恶意客户端可以持续发送 KeyUpdate,迫使服务端无限做密钥派生。影响 TLS 1.3。
- CVE:CVE-2026-56862
- issue:https://go.dev/issue/80528
- 受影响版本:go1.25.13 之前、go1.26.0-0 到 go1.26.6 之前、go1.27.0-0 到 go1.27.0-rc.3 之前
- GO-2026-6090
html/template:JS 正则上下文跟踪缺陷
JS 正则上下文的跟踪存在缺陷,病态输入可以提前闭合未转义的 /,进而注入任意内容,可能导致 XSS。
- CVE:CVE-2026-56858
- issue:https://go.dev/issue/80435
encoding/xml:DecodeElement 深度计数被重置
DecodeElement 会重置深度计数,导致深度保护 never fire,可能造成栈溢出。此版本新增了递归深度保护。
- CVE:CVE-2026-56859
- issue:https://go.dev/issue/80481
net/http:明文 HTTP/2 preface 读取未设超时
未加密的 HTTP/2 在检查、读取 preface 时没有设置超时。修复后 ReadHeaderTimeout 对此生效。
- CVE:CVE-2026-56853
- issue:https://go.dev/issue/80205
x/net/dns/dnsmessage:非法 SVCB/HTTPS RR 可致 panic
解析非法 SVCB/HTTPS RR 时,参数值的大小计算溢出会引发 panic。
- CVE:CVE-2026-46600
- issue:https://go.dev/issue/79795
x/net/idna:ASCII-only Punycode 标签未被拒绝
x/net/idna 未拒绝 ASCII-only 的 Punycode 标签。例如 ToUnicode("xn--example-.com") 会错误返回 "example.com",可能被用于域名混淆。
修复版本
- Go 1.26.6
- Go 1.25.13
两者均发布于 2026-08-13。按版本线升级即可覆盖上面这批修复。
更早一批修复
同一时间段内还有两个已修复的问题:
- CVE-2026-25679:net/url 拒绝非起始位置的 IPv6 字面量(GO-2026-4601)
- CVE-2026-27138:crypto/x509 名称约束 panic