OpenSSL告警处理不当远程拒绝服务漏洞 绿盟科技发布安全威胁通告

简介:

OpenSSL又出漏洞了 CVE-2016-8610 OpenSSL官方已经修复了补丁,还请广大用户尽快升级,不要犯了之前的错误。 APT组织FruityArmor利用微软刚修补的漏洞发起攻击 黄金72小时的威力再次证明 攻防是在比谁更快 。绿盟科技发布《OpenSSL未定义告警远程拒绝服务漏洞安全威胁通告》报告全文如下:

seclists.org网站发布了一条关于OpenSSL远程拒绝服务漏洞的通告。OpenSSL在处理未定义告警数据时候存在缺陷:攻击者可以通过重复发送SSL3_AL_WARNING类型告警数据,使得目标程序的CPU占用率过高,导致拒绝服务攻击。该漏洞编号为CVE-2016-8610, 由360公司Gear Team的石磊上报 。相关链接如下:

http://seclists.org/oss-sec/2016/q4/224

https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=6915f39e68f02ad08a635516d46e72bbf0379914

https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=22646a075e75991b4e8f5d67171e45a6aead5b48

什么是OpenSSL?

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输,能使用户/服务器之间的通讯数据不被攻击者窃听,并且始终对服务器进行认证和有条件的对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上,实现对应用层数据的加密传输与完整性保护。

OpenSSL是一个强大的安全套接字层密码开源库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

大多数通过SSL/TLS协议加密的网站都使用了OpenSSL的开源软件包。当OpenSSL被爆出安全漏洞,影响将会涉及到所有使用OpenSSL开源包的应用。

受影响的版本

  • OpenSSL Project Version = 0.9.8*
  • OpenSSL Project Version = 1.0.1*
  • OpenSSL Project Version <= 1.0.2h
  • OpenSSL Project Version = 1.1.0

不受影响的版本

  • OpenSSL Project Version >= 1.0.2i
  • OpenSSL Project Version >= 1.1.0a

代码修复

(1)通过对比OpenSSL 1.1.0a和1.1.0两个版本的源码,发现该分支的漏洞修复情况如下:

由上图可见,在ssl.h文件中增加了SSL_R_TOO_MANY_WARN_ALERTS宏定义。

在文件record_locl.h中,增加了宏定义MAX_WARN_ALERT_COUNT,表示可连续接受的告警最大数目。

在record.h文件中,定义了变量alert_count,用来表示连续收到的告警数目。

在rec_layer.d1.c文件中,增加了对s->rlayer.alert_count的计数,当其达到MAX_WARN_ALERT_COUNT所表示的给定大小时,就会进入错误处理,从而避免了由于过多告警造成的CPU使用率过高的情况。

上图中的代码修复情况同样是增加了对s->rlayer.alert_count的计数情况,从而避免处理过多的告警数据。

在文件ssl_err.c文件中,定义了错误处理时用到的字符串。

(2)通过对比OpenSSL 1.0.2i和1.0.2h两个版本的源码,发现该分支的漏洞修复情况如下:

在ssl.h文件中增加了SSL_R_TOO_MANY_WARN_ALERTS的宏定义。

在文件ssl_locl.h文件中,增加了MAX_WARN_ALERT_COUNT的宏定义,表示可连续接受的告警数目。同时,在该文件中定义了变量alert_count,用来表示连续收到的告警数目。

在文件d1_pkt.c中,增加了对s->cert->alert_count的计数,当其达到MAX_WARN_ALERT_COUNT所表示的给定大小时,就会进入错误处理,从而避免了由于过多告警数据造成的CPU使用率过高的情况。

在文件s3_pkt.c中也增加了对s->cert->alert_count的计数,避免程序处理过多连续告警数据而导致过高的CPU使用率。

规避方案

  • 官方已对该漏洞进行了修复,建议用户升级到不受影响的版本,官方下载链接如下:

  • 使用OpenSSL Project 1.1.0*分支的用户,也可以根据以下链接,修改OpenSSL源码,重新编译,即可修复该漏洞:

    • https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=6915f39e68f02ad08a635516d46e72bbf0379914
  • 使用OpenSSL Project其他分支的用户,也可以根据以下链接,修改OpenSSL源码,重新编译,即可修复该漏洞:

    • https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=22646a075e75991b4e8f5d67171e45a6aead5b48

绿盟科技声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。



原文发布时间:2017年3月24日
本文由:绿盟科技 发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/openssl-dos-vulnerability-cve-2016-8610-2
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站
相关文章
下一篇
无影云桌面