CVE-2017-3737:OpenSSL Read/write after in error state漏洞预警

阅读量287311

|评论2

发布时间 : 2017-12-08 13:58:07

漏洞编号

CVE-2017-3737

危害程度

中危(Moderate)

漏洞简介

在”error state”状态下立即调用SSL_read()SSL_write() 函数,由于“error state”机制的bug,导致该机制并不能按照原本的意图进行下去(即执行握手失败逻辑)。使得原本需要通过OpenSSL解密/加密的数据并不能在SSL/TLS层得到应有的加解密处理。

 

详情

OpenSSL从1.0.2b开始,引入了一个“error state”机制。即,当握手过程中出现了”fatal error”,OpenSSL会进入”error state”状态,若此时试图继续进行握手,根据“error state”机制,OpenSSL会立即fail(执行握手失败逻辑)。对于那些明确的用来进行握手的函数SSL_do_handshake()SSL_accept() 和 SSL_connect() ,这种机制都是有效的。
但是,如果在”error state”状态下立即调用SSL_read()SSL_write() 函数,由于该处理机制的bug,导致该机制并不能按照原本的意图进行下去(即执行握手失败逻辑)
在这种握手失败场景中,”fatal error”会被返回至初始调用它的函数中。若此时应用程序对同一个SSL对象再接着调用SSL_read()/SSL_write(),OpenSSL会succeed(执行握手成功逻辑),然后会导致原本需要通过OpenSSL解密/加密的数据并不能在SSL/TLS层得到应有的加密/解密处理。

漏洞触发场景

调用OpenSSL库的应用程序中有一个bug。这个bug就是,在握手过程中已经出现了”fatal error”, 但由于bug会导致调用SSL_read()/SSL_write()。

该漏洞在2017年11月10日由David Benjamin(Google)提交给OpenSSL团队。由OpenSSL的开发团队修复。

影响范围

OpenSSL 1.0.2b至1.0.2n以前所有版本
并不影响OpenSSL 1.1.0版本

建议

使用OpenSSL 1.0.2的用户赶紧升级至1.0.2n

 

附录

OpenSSL12月7日安全建议中发布了两个漏洞,其中一个是上述的CVE-2017-3737。

第二个漏洞(低危)
rsaz_1024_mul_avx2 overflow bug on x86_64 (CVE-2017-3738)

也建议使用OpenSSL 1.0.2的用户升级至1.0.2n

 

参考

https://www.openssl.org/news/secadv/20171207.txt

本文由安全客原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/89758

安全客 - 有思想的安全新媒体

分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66