漏洞概述 漏洞名称: crypto/x509: high-CPU VerifyHostname behavior via repeated hostname splitting #79694 漏洞描述: 在 包中, 函数在处理包含多个 DNS SAN 条目的证书时,会对每个条目调用 ,该函数会对相同的输入主机名进行多次 操作。这导致 CPU 使用率异常高,尤其是在处理大型 SubjectAltName DNS 列表时。 影响范围 受影响组件: 包中的 函数 具体场景: - 客户端 TLS 连接 - 任何直接调用 或 的应用程序 - 使用 的场景 潜在风险: - DNS 验证主机名有严格限制(总长度约 253 字节,标签长度 <= 63)。长但有效的主机名会显著增加每 SAN 的工作量。 - 如果应用程序通过攻击者控制的主机名字符串而不强制执行 DNS 限制,可能会接受非常长、多标签的输入作为“有效”,从而执行更多工作。 修复方案 相关代码更改: - Issue #78321: - Issue #78341: - Issue #78342: 具体修复措施: - 在 函数中,对候选主机名只进行一次分割操作,避免重复分割带来的性能问题。 POC 代码 页面中未提供具体的 POC 代码,但可以通过以下示例复现问题: 此代码通过创建一个包含大量 DNS SAN 条目的证书,并验证其中一个主机名,可以观察到 函数的高 CPU 使用情况。