CVE-2021-3449空指针引用漏洞原理分析

漏洞描述

该漏洞为公开漏洞,漏洞编号为CVE-2021-3449,漏洞类型为空指针引用漏洞,存在于OpenSSL的1.1.1-1.1.1j版本,包含11.1.4目标PA设备中的开源组件OpenSSL版本1.1.1g。官方描述信息如下:

漏洞原理

当TLS 1.2服务器在重新协商时,若客户端发送的ClientHello消息省略了初始握手存在的signature_algorithms扩展,但包含signature_algorithms_cert扩展,会触发空指针解引用,导致服务崩溃(拒绝服务攻击)。

发送恶意ClientHello请求后,在下图代码1732行tls1_lookup_sigalg函数位置发生空指针引用漏洞,其中由于signature_algorithms被省略,导致ptmp指针为空,出现空指针引用漏洞。

漏洞验证

当建立renegotiation信息时,存在空指针引用漏洞。验证漏洞POC报文如下:

发送POC,测试程序ASAN检测到空指针引用错误,产生崩溃时的函数调用链如下图: