一、漏洞详情
OpenSSL官方发布安全公告,修复了OpenSSL版本1.0.2、1.1.1和3.0中的拒绝服务漏洞(CVE-2022-0778)。
由于证书解析时使用的BN_mod_sqrt()函数存在一个错误,它会导致在非质数的情况下永远循环。可通过生成包含无效的显式曲线参数的证书来触发无限循环。由于证书解析是在验证证书签名之前进行的,因此任何解析外部提供的证书的程序都可能受到拒绝服务攻击。此外,当解析特制的私钥时(包含显式椭圆曲线参数),也可以触发无限循环。
因此易受攻击的情况如下:
使用服务器证书的TLS客户端
使用客户端证书的TLS服务器
托管服务提供商从客户处获取证书或私钥
证书颁发机构解析来自订阅者的认证请求
任何其他解析ASN.1椭圆曲线参数的程序
此外,任何使用BN_mod_sqrt()的其他应用程序,如果可以控制参数值,也会受到此漏洞影响。需要注意的是,任何需要证书中公钥的操作都会触发无限循环,特别是自签名的证书,在验证证书签名时会触发循环。
建议受影响用户做好资产自查以及预防工作,以免遭受黑客攻击。
二、影响范围
OpenSSL版本1.0.2:1.0.2-1.0.2zc
OpenSSL版本1.1.1:1.1.1-1.1.1m
OpenSSL版本3.0:3.0.0、3.0.1
三、修复建议
目前此漏洞已经修复,建议受影响用户及时升级更新:
OpenSSL 1.0.2用户应升级至1.0.2zd(仅限高级支持客户)
OpenSSL 1.1.1用户应升级至1.1.1n
OpenSSL 3.0用户应升级至3.0.2
注:OpenSSL 1.0.2和OpenSSL 1.1.0已停止支持。