笔者:国际认证信息系统审计师、软考系统分析师
按 OpenSSL 在2023年2月7日发布的安全咨询:
本次发布的3.0.8、1.1.1t及1.0.2zg版本,重点在于修复了编号为 CVE-2023-0286 的漏洞:
在 X.509 GeneralName 中的 X.400 地址类型混淆(CVE-2023-0286)
严重程度:高
在 X.509 GeneralName 中存在一个与 X.400 地址处理有关的类型混淆漏洞。X.400 地址在解析时是按 ASN1_STRING 类型处理的,但是 GENERAL_NAME 的公共结构定义错误地将 x400Address 字段的类型指定为 ASN1_TYPE 。这个字段随后被 OpenSSL 函数 GENERAL_NAME_cmp 解释为 ASN1_TYPE 而不是 ASN1_STRING 。
当启用CRL检查时(例如,应用程序设置了 X509_V_FLAG_CRL_CHECK 标志),此漏洞可能允许攻击者向 memcmp 函数调用传递任意指针。
了解内存地址指针和数据结构关系的网络安全人员可以很容易理解到,向memcmp 函数传递任意指针的后果最容易产生的后果就是程序崩溃,从而导致服务停止,形成拒绝服务攻击。
更进一步的是,向memcmp函数传递经过精心选择的指针地址和数据长度,可以实现任意内存读取,即通过内存内容比较结果曲线地判断目标指针地址的内容。
在大多数情况下,开展攻击要求攻击者同时提供证书链和CRL,而这两者都不需要有有效的签名。如果攻击者只控制了其中一个输入项,则另一个输入项必须已经包含一个 X.400 地址作为CRL分发点,这不是常规情况。
因此,这个漏洞很可能只影响那些自己实现了通过网络检索CRL的功能的应用程序。
OpenSSL 3.0、1.1.1 和 1.0.2 版本均受影响,因此:
▶OpenSSL 3.0 用户应该升级到 OpenSSL 3.0.8。 ▶OpenSSL 1.1.1 用户应该升级到 OpenSSL 1.1.1t。 ▶OpenSSL 1.0.2 用户应该升级到 OpenSSL1.0.2zg (仅提供给高级支持客户)
此问题是在2023年1月11日由David Benjamin (Google) 所发现,修补程序由 Hugo Landau 开发。
本次版本升级涉及的其他漏洞修补包括:
Timing Oracle in RSA Decryption | RSA 解密中的时序预言 | CVE-2022-4304 |
X.509 Name Constraints Read Buffer Overflow | X.509 名称约束读取缓冲区溢出 | CVE-2022-4203 |
Use-after-free following BIO_new_NDEF | 在 BIO_new_NDEF 之后的释放后使用 | CVE-2023-0215 |
Double free after calling PEM_read_bio_ex | 调用 PEM_read_bio_ex 后的重复释放 | CVE-2022-4450 |
Invalid pointer dereference in d2i_PKCS7 functions | d2i_PKCS7 函数中的无效指针解引用 | CVE-2023-0216 |
NULL dereference validating DSA public key | 验证 DSA 公钥时的空指针解引用 | CVE-2023-0217 |
NULL dereference during PKCS7 data verification | 在 PKCS7 数据验证期间的空指针解引用 | CVE-2023-0401 |
本站微信订阅号:
本页网址二维码: