【威胁通告】OpenSSL告警处理不当远程拒绝服务漏洞

OpenSSL又出漏洞了 CVE-2016-8610 OpenSSL官方已经修复了补丁,还请广大用户尽快升级,不要犯了之前的错误。 APT组织FruityArmor利用微软刚修补的漏洞发起攻击 黄金72小时的威力再次证明 攻防是在比谁更快 。

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

 

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

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:486207500、570982169
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment