OpenSSL RCE 漏洞影响多个Synology产品
2021-09-08 12:50:00 Author: www.4hou.com(查看原文) 阅读量:53 收藏

OpenSSL RCE 漏洞影响多个Synology产品。

中国台湾NAS厂商Synology近日公开了影响其产品的2个远程代码执行漏洞和DoS OpenSSL漏洞,CVE编号为CVE-2021-3711和CVE-2021-3712。

CVE-2021-3711

为解密SM2加密的数据,应用需要调用API函数EVP_PKEY_decrypt()。一般来说,应用会调用该函数两次。第一次,函数的out 参数为NULL,退出时outlen参数等于解密明文所需的缓存大小。然后应用会分配足够大小的缓存并再次调用EVP_PKEY_decrypt(),这次调用时out参数为非空值。

该漏洞是SM2解密代码实现中的一个漏洞,具体来说是第一次调用EVP_PKEY_decrypt()计算得到的解密明文所需的缓存大小可以小于第二次调用的真实大小。这会导致应用第二次调用 EVP_PKEY_decrypt() 时由于缓存太小引发缓存溢出。可以向应用展示解密SM2内容的恶意攻击者可以修改缓存数据的内容引发最大62字节的溢出,改变应用行为或引发应用奔溃。缓存的位置与具体应用有关,但都是堆分配的。该漏洞CVSS3评分8.1分,影响OpenSSL 1.1.1-1.1.1k版本,目前已在 OpenSSL 1.1.1l版本中修复。

CVE-2021-3712

ASN.1字符串在OpenSSL中以ASN1_STRING结构的形式表示,包含一个表示字符串数据的缓存和表示缓存长度的域。而正常的C字符串是以NUL (0)字节结束的字符串数据形式来表示缓存的。虽然不是严格要求,使用OpenSSL自带的d2i函数处理的ASN.1字符串以及用 ASN1_STRING_set() 函数设置的字符串都会以NUL结束。但是在ASN1_STRING数组中,应用可以直接设置data域和length域来构建不以NUL结束的有效的ASN1_STRING结构。具体可以使用ASN1_STRING_set0()函数来实现。

但大多数打印ASN.1 数据的OpenSSL函数都假定ASN1_STRING字符串数组是以NUL结束的。当应用请求打印ASN.1结构,而ASN.1结构中包含不以NUL结尾的数据域的ASN1_STRING时,就会引发读缓存溢出。这一问题同样可以出现在证书处理中,包括X509_get1_email()、X509_REQ_get1_email() 和 X509_get1_ocsp() 函数。如果恶意攻击者可以让应用直接构建一个ASN1_STRING,然后通过受影响的OpenSSL函数来出席,就可以引发DoS攻击和应用奔溃。应用于证书攻击时可能引发隐私内存内容泄露,比如私钥和敏感明文信息。该漏洞影响OpenSSL 1.1.1-1.1.1k和OpenSSL 1.0.2-1.0.2y版本,目前已在OpenSSL 1.1.1j 和OpenSSL 1.0.2za版本中修复。

受影响的产品

受影响的产品包括Synology DiskStation Manager (DSM)、Synology Router Manager (SRM)、VPN Plus 服务器和VPN 服务器,具体包括:

微信截图_20210907114138.png

本文翻译自:https://www.synology.com/en-us/security/advisory/Synology_SA_21_24如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/Yr4W
如有侵权请联系:admin#unsafe.sh