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

阅读量    92131 | 评论 2

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

漏洞编号

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

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多