腾讯安全研究员对 OpenSSL 拒绝服务漏洞 CVE-2021-3449 的分析

Andrew 2021-04-09
专栏 - 资讯 发布于 2021-04-09 10:40:31 阅读 593 评论 0

3月25日,OpenSSL官方发布高危漏洞风险通告,修复了OpenSSL拒绝服务漏洞(CVE-2021-3449)。

由于OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。OpenSSL应用极为广泛,已是全球互联网最重要的基础设施之一,OpenSSL高危漏洞的披露,立刻引起安全研究人员的广泛关注。

腾讯安全于3月26日已发布安全风险通告,提醒企业安全运维人员尽快修复漏洞。腾讯主机安全(云镜)已支持检测OpenSSL拒绝服务漏洞(CVE-2021-3449),腾讯云WAF应用防火墙已支持清洗OpenSSL拒绝服务漏洞(CVE-2021-3449)利用流量。

腾讯安全研究员对OpenSSL拒绝服务漏洞进行了详细的技术分析。

A、漏洞形成原理

TLSv1.2在进行再次协商时,没有对支持算法数组长度的变量值进行初始化,导致再次协商时复用初次协商的值,进一步导致内存读异常。

B、攻击条件

1、启用了 TLSv1.2

C、源码解析

1、只初始化了peer_sigalgs
图片

2、解析客户端传入的协商消息,提取长度和内容
图片

3、遍历客户端传入的内容,若ptmp为NULL,而preflen有值,则触发访问异常
图片

D、源码修复

https://github.com/openssl/openssl/commit/...

给peer_sigalgslen增加初始值
图片

其中描述了引入过程:
https://github.com/openssl/openssl/commit/...

E、PoC

github.com/terorie/cve-2021-3449
实际是tls库,在协商过程这里做了个改动,判断是否初次,若再次协商,则不设置supportedSignatureAlgorithms,只设置supportedSignatureAlgorithmsCert。
图片

F、受影响的版本

此问题影响所有OpenSSL 1.1.1版本。

OpenSSL 1.0.2不受此问题影响。

G、安全版本

OpenSSL 1.1.1k

H、修复方案

1、编译修复的话参照OpenSSL升级文章:https://mp.weixin.qq.com/s/uVWp4pkLttuSwDnDA1m52g,主要看OpenSSL 1.1.1用户部分,将下载的官方源码版本改成 1.1.1k 即可。

2、Ubuntu
主要影响Ubuntu 18.04、20.04、20.10、21.04,已经发布了修复版本:ubuntu.com/security/cve-2021-3449

图片

sudo apt-get updatesudo apt-get install --only-upgrade openssl

图片

3、CentOS
主要影响CentOS 8、8.2,当前也已发布了修复版本:https://access.redhat.com/errata/RHSA-2021...

图片

执行命令:

yum update openssl 

图片

参考链接:

https://s.tencent.com/research/bsafe/1281.html
https://www.openssl.org/news/secadv/20210325.txt
https://www.cybersecurity-help.cz/vdb/SB2021032518

原创:腾讯安全威胁情报中心
原文链接:https://mp.weixin.qq.com/s/h1EGkxMcHvpk4V3...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!