OpenSSL Project 本周正式推出了 OpenSSL 1.1.1l,该版本修补了一个高严重性漏洞,该漏洞能够让攻击者改变应用程序的行为或导致应用程序崩溃。
该漏洞的 CVE ID 为 CVE-2021-3711,被描述为一个与 SM2 解密有关的缓冲区溢出漏洞。
为了解密 SM2 加密的数据,应用程序通常会调用 API 函数 EVP_PKEY_decrypt()
。一般情况下,一个应用程序将调用这个函数两次。第一次在进入时,"out" 参数可以是 NULL
,而在退出时,"outlen" 参数填充了为容纳解密明文所需的缓冲区大小。然后,应用程序可以分配一个足够大的缓冲区,并再次调用 EVP_PKEY_decrypt()
,但这次为 "out" 参数传递一个非 NULL 的值。
SM2 解密代码实现中的这个漏洞意味着第一次调用 EVP_PKEY_decrypt()
并计算出的容纳明文所需的缓冲区大小,可能要小于第二次调用时实际所需的大小。因此当应用程序第二次调用 E VP_PKEY_decrypt()
时,就可能导致缓冲区溢出。
恶意攻击者如果能够向应用程序提供 SM2 内容进行解密,就能导致攻击者所选择的数据溢出缓冲区,最多可溢出 62 个字节,从而改变缓冲区后其他数据的内容。进一步改变应用程序行为或导致应用程序崩溃。
OpenSSL Project 的 Matt Caswell 解释说:"应用程序可能在内存中保存有任何一种数据(如财务数据、凭证等),如果攻击者能够改变它,那引起的后果不堪设想"。安全研究人员 John Ouyang 表示,这个安全漏洞影响 1.1.1 版本之前的 OpenSSL。
除了上述这个高严重性漏洞以外,OpenSSL 还报告了一个 CVE ID 为 CVE-2021-3712 的中等程度漏洞,该漏洞可以被利用进行拒绝服务(DoS)攻击。这个问题也已经随着 1.1.1l 版本的发布得到了修复。
截止到目前,今天已发现了五个与 OpenSSL 相关的漏洞,其中有两个被评为高严重性的漏洞。而在 2020 全年,OpenSSL 只发现了三个漏洞。
猜你喜欢: