最近漏扫发现一个业务系统存在SSL/TLS协议信息泄露漏洞(CVE-2016-2183)。SSL全称是Secure Sockets Layer,安全套接字层,它是由网景公司(Netscape)设计的主要用于Web的安全传输协议,目的是为网络通信提供机密性、认证性及数据完整性保障。如今,SSL已经成为互联网保密通信的工业标准。SSL最初的几个版本(SSL 1.0、SSL2.0、SSL 3.0)由网景公司设计和维护,从3.1版本开始,SSL协议由因特网工程任务小组(IETF)正式接管,并更名为TLS(Transport Layer Security),发展至今已有TLS 1.0、TLS1.1、TLS1.2,TLS1.3这几个版本。TLS, SSH, IPSec协商及其他产品中使用的DES及Triple DES密码存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。
根据漏洞详细描述,链接如下:https://openssl-library.org/news/secadv/20160922.txt
Openssl官网给出的解决方案为升级 Openssl的版本,OpenSSL 1.0.2需要升级到1.0.2i版本,OpenSSL 1.0.1需要升级到1.0.1u,并且在高版本中解决了该问题,OpenSSL 1.1.0 以后没有此漏洞。
这边报告给出的解决办法建议是避免使用IDEA、DES和3DES算法。
那么需要根据自身的业务情况去进行修复处理,比如我们这边使用的是nginx服务,修改conf文件配置,将这些算法进行禁用就可以了。配置之前可以使用nmap工具进行测试,命令如下:
nmap -sV --script ssl-enum-ciphers -p 端口 IP地址或域名
检测结果可以看到支持TLSv1.2的密钥有A和C两个强度级别,least strength:C表示最小强度为C,A的级别高于C,另外提示3DES算法可能会受到SWEET32攻击。那么我们就配置nginx配置文件,禁用掉3DES算法。将ssl_ciphers配置项关于3DES前面加上”!”表示禁用即可。
如果在配置 Nginx 的 SSL 时不指定 ssl_ciphers配置项,那么默认允许使用的加密算法和协议将会包括一些已经证实不够安全的算法及协议,所以明确指定算法。另外在浏览器使用不安全的算法访问时,会自动禁止连接。配置完成重启nginx服务,再次使用nmap工具测试,可以看到最小强度为A高级别,也没有易受到SWEET32攻击的提示了。
至此,Nginx关于SSL/TLS协议信息泄露漏洞(CVE-2016-2183)修复完成!