标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2022-3201]   作者: 小螺号 发表于: [2022-11-03]

本文共 [18] 位读者顶过

一、漏洞概况

近日,捕获到 OpenSSL 缓冲区溢出漏洞(CVE-2022-3602)相关情报,攻击者可以利用该漏洞造成缓冲区溢出, 可能造成远程代码执行。OpenSSL 是一个强大的、商业级的、功能齐全的工具包,用于通用加密和安全通信。当应用程序验证不受信任的 X.509 证书(包括 TLS 证书)时, 可能被攻击者利用此漏洞, 该漏洞已经在 OpenSSL 3.0.7 版本被修复。

漏洞复现:

[出自:jiwo.org]

此次受影响版本如下:

二、漏洞评估

公开程度:已出现 PoC

利用条件:无权限要求

交互要求:0 click 漏洞

危害:高危

影响范围:OpenSSL 3.0.0 - 3.0.6

三、漏洞分析

该漏洞存在于 ossl_punycode_decode 函数当中, 该函数主要提供 punycode 域名解码的功能, 当客户端或服务器配置为验证 X.509 证书时会调用此函数。因此攻击者可以通过在电子邮件地址字段的域中创建包含 punycode 的特制证书来利用该漏洞。

ossl_punycode_decode 函数中, 主要是因为循环终止条件没有处理好, 导致了最终在往栈上 buffer 写数据的时候多写了 4 字节的数据, 导致覆盖到了 buffer 后面的内容: 补丁前:



补丁后:


Windows 平台上面溢出的字节会导致程序崩溃, 这是因为栈上面的 stack cookies 被覆盖导致程序的安全机制验证不通过, 导致崩溃。

覆盖前:


覆盖后:


可以看到 buffer 往后多写了 4 字节, 修改了 buffer 后面的内容;

但是在 Linux 平台上面触发漏洞确不会发生崩溃, 这是因为虽然溢出发生了, 但是Linux 栈上面的 canary 并没有被修改并且没有数据结构被破坏。

覆盖前:


覆盖后:


可以看到在 canary 之前仍然有 8 字节的空间, 没有覆盖到 canary, 而覆盖的数据只是一个没有初始化的变量, 并没有影响到程序的执行流程, 所以程序不会崩溃。


四、修复方案

1、 对于自主编译使用 OpenSSL 的用户,且 OpenSSL 版本为 3.0.0 - 3.0.6 ,请尽快升级至 3.0.7。

参考链接: https://www.openssl.org/source/

2、 对于应用程序中使用了 OpenSSL 的用户,请检查相关库的版本,并联系应用厂商进行更新。

评论

暂无
发表评论
 返回顶部 
热度(18)
 关注微信