【漏洞通报】 OpenSSL存在缓冲区溢出漏洞(CVE-2022-3602/3786)

admin 2022年11月9日21:33:40评论62 views字数 2209阅读7分21秒阅读模式

【漏洞通报】 OpenSSL存在缓冲区溢出漏洞(CVE-2022-3602/3786)

0x01 OpenSSL

OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。


0x02 漏洞简介

近期,OpenSSL官方发布了关于CVE-2022-3786(“X.509 邮件地址变量长度缓冲区溢出”)和CVE-2022-3602(“X.509 邮件地址4字节缓冲区溢出”)漏洞的安全公告。


0x03 漏洞详解

#include <locale.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <stdint.h>
int ossl_a2ulabel(const char *in, char *out, size_t *outlen);
int main(int argc, char *argv[]){  setlocale(LC_CTYPE, "");
-------------------------------  char out[16];  size_t outlen = sizeof(out);
 ------------------------------
 if(result == 1) {    printf("Ok: [%ld] %sn", outlen, out);  ------------------------------    printf("Too short: [%ld : %ld] %sn", outlen, strlen(out), out);  } else {    printf("Bad stringn");    exit(0);  }
 return 0;}
#include <locale.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <stdint.h>
// Edit to change the test string#define TEST_STRING "hello! -gr25faaaaaaaaaaaaa"
// Edit to change the output buffer's length#define DECODED_LENGTH 20
---------------------------------int main(int argc, char *argv[]){  setlocale(LC_CTYPE, "");
 -------------------------------
 if(!ossl_punycode_decode(TEST_STRING, strlen(TEST_STRING), decoded, &decoded_len)) {    printf("Encoding failed!n");    free(decoded);    exit(1);  }
 printf("encoded: [%ld] %sn", strlen(TEST_STRING), TEST_STRING);  printf("decoded: [%d] ", decoded_len);
 -----------------------------    free(decoded);  return 0;}

这两个漏洞是位于punycode解码函数中的两个缓冲区溢出漏洞。可在X.509证书验证中触发缓冲区溢出,尤其是在检查名称限制时。需注意的是,这种情况发生在证书链签名验证后,且要求证书颁发机构签名该恶意证书或者应用程序在构建受信任发布机构路径失败后继续进行证书验证。


在TLS客户端,可通过连接到恶意服务器来触发。在TLS服务器中,如果服务器请求客户端验证且连接恶意客户端,可触发。


攻击者可构造恶意邮件地址在栈上溢出包含 . 字符的任意字节数量。该缓冲区溢出可导致崩溃(引发拒绝服务)(CVE-2022-3786)。


攻击者可构造恶意邮件地址,在栈上溢出四个受攻击者控制的字节。该缓冲区溢出可导致崩溃(引发拒绝服务)或可能引发远程代码执行,取决于任何既定平台/编译器的栈布局 (CVE-2022-3602)。


0x04 漏洞范围

  • OpenSSL 版本 3.0.0 - 3.0.6


0x05 漏洞信息

  • 漏洞名称: OpenSSL缓冲区溢出漏洞

  • 漏洞编号:CVE-2022-3602/3786

  • 漏洞危害:高危 缓冲区溢出

  • 漏洞poc:已知

  • 漏洞exp:暂无

  • 在野利用:不存在


ps:CVE-2022-3602 最初被OpenSSL项目评估为“严重”(可能导致RCE),但经过测试和评估,该漏洞在2022年11月1日被降级为“高危”。


0x06 漏洞修复

目前OpenSSL项目已经修复了这些漏洞,受影响用户可以更新到以下版本:

OpenSSL 3.0版本用户:升级到 OpenSSL 版本3.0.7。


下载链接:

https://www.openssl.org/source/


ps:

1、OpenSSL 1.1.1 和 1.0.2 不受这些漏洞影响。

2、OpenSSL项目还发布了错误修复版本OpenSSL 1.1.1s,OpenSSL 1.1.1用户可及时升级。

3、任何验证从不受信任来源接收的 X.509 证书的 OpenSSL 3.0 应用程序都容易受到针对上述漏洞的攻击。


【漏洞通报】 OpenSSL存在缓冲区溢出漏洞(CVE-2022-3602/3786)

原文始发于微信公众号(火山信安实验室):【漏洞通报】 OpenSSL存在缓冲区溢出漏洞(CVE-2022-3602/3786)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月9日21:33:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞通报】 OpenSSL存在缓冲区溢出漏洞(CVE-2022-3602/3786)http://cn-sec.com/archives/1392978.html

发表评论

匿名网友 填写信息