背景
OpenSSL是一个知名的开源安全套接字层密码库。全球成千上万的web服务器的网站加密技术使用OpenSSL。
网银、在线支付、电商网站、门户网站、电子邮件等互联网应用广泛使用OpenSSL实现数据的安全传输和安全存储。
历史上,OpenSSL多次出现安全漏洞。
2014年,OpenSSL爆出Heartbleed(心脏滴血)漏洞,网络出现了“致命内伤”。
心脏滴血称为互联网安全历史上最严重的漏洞之一,当时全球三分之二的网站可被该漏洞攻击。
心脏滴血漏洞的CVE编号是CVE-2014-0160,CVSS3.1打分7.5,属于严重漏洞。
业界使用CVE ID作为漏洞编号。CVE是通用漏洞披露(Common Vulnerabilities and Exposures)的英文缩写。
业界采用CVSS量化漏洞影响。CVSS是通用漏洞评分系统(Common Vulnerability Scoring System)的英文缩写。
CVSS得分最大为10,最小为0。得分7~10的漏洞通常认为严重,得分在4~6.9之间是中级漏洞,0~3.9是低级漏洞。
2021年8月24日,OpenSSL发布了OpenSSL 1.1.1l,该版本修复了一个高危漏洞:CVE-2021-3711。
根据
https://access.redhat.com/security/cve/cve-2021-3711
该漏洞的CVSS3.1打分8.1,属于严重漏洞。
该漏洞影响OpenSSL 1.1.1l之前的所有包含SM2商密算法版本。业界一些基于OpenSSL改造过的商用国密算法版本也可能受该漏洞影响。
本文结合OpenSSL公告、修复前后的OpenSSL代码和触发漏洞的sm2密文数据,分析CVE-2021-3711漏洞原理,并评估对腾讯自研国密算法库的影响。
漏洞分析
根据官网披露的信息细节https://www.openssl.org/news/secadv/20210824.txt
得出如下分析:
漏洞原因:SM2解密时分配了一块内存,解密后的结果可能大于该分配内存的容量,造成内存越界写。
以下是具体分析,使用CVE-2021-3711漏洞修复之前的OpenSSL 1.1.1代码。
1、OpenSSL EVP解密操作
OpenSSL EVP将常用的密码算法进行了封装,提供统一的密码学各种函数。
看示例图找规律,OpenSSL对密文的解密是什么样的操作?
示例1:crypto/evp/p_open.c

示例2:crypto/crmf/crmf_lib.c

本文详细分析了OpenSSL 1.1.1版本中的高危漏洞CVE-2021-3711,该漏洞源于SM2解密过程中内存分配错误,可能导致内存越界写。OpenSSL已发布补丁修复。同时,腾讯自研的国密库因未使用相关代码,不受该漏洞影响。
最低0.47元/天 解锁文章
2874

被折叠的 条评论
为什么被折叠?



