CVE-2025-58188CVE-2025-58188是Go语言标准库中的一个拒绝服务漏洞。该漏洞存在于Go语言的证书链验证功能中,当验证包含DSA公钥的证书链时,由于接口类型转换假设DSA公钥实现了Equal方法,但实际上并未实现,导致程序发生panic。这会影响所有验证任意证书链的Go程序。攻击者可以通过构造包含DSA公钥的恶意证书链,诱使受害者程序进行验证,从而触发拒绝服务攻击。在TLS服务器、证书验证工具、PKI系统等依赖Go语言crypto/tls包进行证书验证的应用中均可能受到影响。该漏洞的CVSS评分为7.5,属于高危级别,攻击复杂度低,无需认证和用户交互即可利用。
该漏洞的根本原因在于Go语言crypto/x509包在验证证书链时,对不同类型的公钥进行接口类型转换。具体来说,当代码尝试调用公钥的Equal方法进行证书链验证时,假设所有公钥类型都实现了crypto.PublicKey接口的Equal方法。然而,DSA公钥类型并未实现该方法,导致类型断言失败并触发panic。攻击者可以构造一个包含DSA公钥的X.509证书,并将其嵌入证书链中。当目标程序使用crypto/x509包的证书验证功能处理该证书链时,会在验证DSA公钥证书时触发panic,使程序崩溃。由于Go语言的TLS服务器和客户端通常会自动验证对等方的证书链,攻击者可以作为TLS连接的对等方发送恶意证书,从而实现远程拒绝服务攻击。