针对OpenSSL 922乌龙事件的回应 绿盟科技给出OpenSSL最新漏洞分析及防护方案

简介:

近日,OpenSSL针对22日爆出的 CVE-2016-6304漏洞 发布了补丁,补丁又带来了 新的漏洞CVE-2016-6309 和CVE-2016-7052 ,官方 随即再次发布公告 给出更新补丁,1.1.0a版本升级到1.1.0b,正在使用1.0.2i版本升级到1.0.2j,绿盟科技也再次给出新漏洞的分析及防护方案……

OpenSSL最新漏洞信息

CVE-2016-6309

提交时间:2016年9月23日

漏洞描述:当系统收到超过大约16K大小的消息时,准备接受该消息的缓冲区会在其他地方重新分配。这时会产生一个指向原缓冲区的悬空指针,允许将新数据写入这片已经释放过的区域。这会导致潜在的任意代码执行问题。

严重程度:严重

CVE-2016-7052

提交时间:2016年9月22日

漏洞描述:在1.0.2i版本更新中,遗漏了对CRL的完整性检查,允许远程攻击者利用一个空指针解引用导致程序崩溃,造成拒绝服务。

严重程度:中

OpenSSL最新漏洞影响版本

影响的版本

  • OpenSSL Project OpenSSL  1.1.0a
  • OpenSSL Project OpenSSL  1.0.2i

不受影响的版本

  • OpenSSL Project OpenSSL  1.1.0b
  • OpenSSL Project OpenSSL  1.0.2j

OpenSSL最新漏洞详细分析

CVE-2016-6309分析

9月22日发布的1.1.0a版本更新中,针对CVE-2016-6307漏洞的修补代码引入了一个新漏洞——CVE-2016-6309。这是一个UAF漏洞,其成因是接收消息的缓冲区大小初始化为16KB,当接收到的消息大于16KB时,缓冲区将会重新分配,引起缓冲区位置的变化,原来缓冲区地址上的数据会被释放,攻击者可以重新写入数据到该地址,最终导致任意代码执行。

CVE-2016-6307的补丁代码为:

BUF_MEM_grow_clean()函数在释放缓冲区s->init_buf时,会产生一个悬空指针,可以允许攻击者对这片释放后的内存区域重新利用。CVE-2016-6309的补丁代码如下图所示:

grow_init_buf()是一个新增的函数,其实现如下:

CVE-2016-7052漏洞分析

该漏洞的成因是空指针异常,受影响的版本是1.0.2i。通过补丁前后两个版本代码的对比,发现一共做了两处修复。

第一处patch信息为:

从上图可以看到,新版本的代码将if (dstate->ac_data == NULL)条件修复为if (dstate->mac_data == NULL),当dstate->mac_data为空时,内存申请失败;而 patch前未对dstate->mac_data进行判断,这样有可能导致一个空指针引用。

第二处patch信息为:

首先,patch后的代码增加了对crl_score == 0判断,当其为空时,就可以跳过本次for循环,不会执行后面的证书更新了,避免了向crls列表中更新空证书。其次,增加了对best_crl != NULL的判断。在未patch前,当best_crl等于NULL时,后续代码的执行会出现问题:

调用ASN1_TIME_diff函数,更新crls列表,使得列表中包含了空证书,攻击者利用一个空指针解引用可以导致程序崩溃,造成拒绝服务。而patch后增加了对best_crl是否为空的判断,避免了该问题的发生。

OpenSSL最新漏洞修复建议

官方补丁:

  • 官方已经发布针对这两个漏洞的版本更新,建议正在使用1.1.0a版本的用户尽快升级到1.1.0b版本,正在使用1.0.2i版本的用户尽快升级到1.0.2j版本,
  • 新版本下载链接如下: https://www.openssl.org/source/

产品服务:在授权下,使用绿盟科技的远程评估系统RSAS进行漏洞检测。

工程服务:

  • 短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  • 中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。
  • 长期服务:基于行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)。

相关文章请见

乌龙了,OpenSSL 9月22日的补丁搞出两个新漏洞 绿盟科技再次发布预警通道

绿盟科技发出OpenSSL高危威胁预警通告 将实施7*24小时内部跟踪24小时技术分析、产品升级及防护方案

绿盟科技发布OpenSSL高危漏洞技术分析与防护方案 G20成员国美国、中国、德国受影响较大

OpenSSL安全公告高危漏洞 可以对默认配置的服务器发动DDoS攻击




原文发布时间:2017年3月24日
本文由:绿盟科技 发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/nsfocus-latest-openssl-vulnerability-analysis-and-protection-cve-2016-6309-cve-2016-7052#
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站
相关文章
|
存储 虚拟化 Windows
ESXI8.0安装Windows11
HKEY_LOCAL_MACHINE\SYSTEM\Setup 创建一个名为“LabConfig”的项,在“LabConfig”下创建两个32位DWORD值: 键为“BypassTPMCheck”,值为“00000001” 键为“BypassSecureBootCheck”,值为“00000001” 在安装 Windows 11 进入到以下阶段即“现在安装”按 Shift+F10 进入到命令提示符,添加注册表键值绕过 TPM 检查;如果你是从微软官方下载的 ISO 镜像则在提示需要输入密钥阶段进入到命令提示符;之后就可以正常安装了。 REG ADD HKLM\SYSTEM\Setu
9209 0
ESXI8.0安装Windows11
|
SQL 监控 NoSQL
架构师第一课,一文带你玩转 ruoyi 架构
我理解的架构/框架应该有以下功能: 1.满足日常开发功能,如单点登陆、消息队列、监控等; 2.规范开发者的开发,指定代码格式、注释等; 3.提高开发效率,提供一系列的封装方法,并减少bug的产生率。 下文将详细介绍ruoyi框架。
8368 1
架构师第一课,一文带你玩转 ruoyi 架构
|
11月前
|
存储 数据可视化 编译器
【C语言】union 关键字详解
联合体(`union`)是一种强大的数据结构,在C语言中具有广泛的应用。通过共享内存位置,联合体可以在不同时间存储不同类型的数据,从而节省内存。在嵌入式系统、硬件编程和协议解析等领域,联合体的使用尤为常见。理解和正确使用联合体可以使代码更加高效和灵活,特别是在内存受限的系统中。
705 3
【C语言】union 关键字详解
|
10月前
|
监控 安全 网络协议
永久免费SSL证书教程—自动续签
要实现免费SSL证书的自动续签,选择合适的证书颁发机构(CA)至关重要。推荐使用JoySSL,填写注册码230922可获得免费且支持自动续签的SSL证书。申请步骤包括注册账户、选择证书类型、提交申请、验证域名所有权及安装证书。配置自动续签需安装续签工具、生成密钥和CSR,并设置续签参数。定期检查证书状态、备份证书和密钥,确保续签顺利进行。注意CA机构的政策和服务条款变化,以保持证书的有效性。
|
自然语言处理 测试技术 Docker
BigCodeBench: 继 HumanEval 之后的新一代代码生成测试基准
• 多语言性: 目前,BigCodeBench 仅支持 Python,无法轻松扩展到其他编程语言。由于函数调用大多是特定于语言的,在 Python 以外的语言中找到具有相同功能的包或库是一个挑战。 • 严格性: 虽然我们在 BigCodeBench 的地面真值解决方案中实现了高测试覆盖率,但这并不能保证 LLM 生成的所有代码解决方案都能正确评估现有的测试用例。以前的工作如 EvalPlus 尝试通过 LLM 和基于突变的策略扩展有限的测试用例。然而,将EvalPlus 适应于 BigCodeBench 的测试框架是一个挑战。尽管 EvalPlus 强调输入输出断言,BigCodeBench
632 0
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
1507 0
|
缓存 分布式计算 资源调度
MapReduce入门(一篇就够了)
MapReduce入门(一篇就够了)
9940 1
MapReduce入门(一篇就够了)
|
缓存 安全 Shell
Git - 新建分支及提交代码到分支到远程仓库
Git - 新建分支及提交代码到分支到远程仓库
1454 0
详尽分享马卡龙色色卡及其十六进制代码
详尽分享马卡龙色色卡及其十六进制代码
689 0