APP下载

TLS/SSL漏洞分析与检测

2020-10-29张博

河南科技 2020年26期

张博

摘 要:TLS/SSL协议是目前广泛使用的HTTPS的核心,既可以实现端到端通信的身份认证、数据保密性和完整性保护,又被大量应用到非Web应用的其他协议中,如SMTP和SSH。正因为TLS/SSL如此重要,其安全性备受关注。本文分析了已知的TLS/SSL漏洞,并通过试验发现开源工具testssl.sh能检测这些漏洞,这有助于运维人员快速发现漏洞并采取加固措施。

关键词:TLS/SSL;漏洞分析;漏洞检测

中图分类号:TP393.08文献标识码:A文章编号:1003-5168(2020)26-0023-03

Abstract: The TLS/SSL protocol is the core of the widely used HTTPS, which can not only realize the identity authentication, data confidentiality and integrity protection of end-to-end communication, but also be widely used in other protocols of non-web applications, such as SMTP and SSH. Because TLS/SSL is so important, its security has attracted much attention. This paper analyzed the known TLS/SSL vulnerabilities, and through experiments found that the open source tool testssl.sh could detect these vulnerabilities, which helped operation and maintenance personnel to quickly find vulnerabilities and take reinforcement measures.

Keywords: TLS/SSL;wulnerability analysis;wulnerability detection

当今时代,计算机网络技术飞速发展,互联网已经成为人们生活中不可分割的一部分,然而计算机网络作为一种公开的信息传递方式,个人隐私安全是每个人都很关注的重点,因此各种为保证安全传输数据的网络传输协议[1-3]应运而生。本文将对传输层安全性协议(Transport Layer Security,TLS)进行漏洞分析。

TLS协议及其前身安全套接层(Secure Sockets Layer,SSL)均为安全协议,目的是为通过互联网相互通信的客户端与服务器提供机密性、数据完整性及身份认证等安全保障。Netscape公司在1994年推出首版网页浏览器时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。后来经过IETF将SSL进行标准化。目前,它已成为互联网上保密通信的行业标准。

TLS/SSL协议采用AES等对称加密算法、RSA等非对称算法、SHA-256等哈希算法以及其他密码技术实现两个应用之间的安全可靠的交互[4-6],并采用X.509数字证书实现鉴别,其目的是建立一个安全的通信通道,而且该通道可在服务器和客户机两端同时实现支持。

1 漏洞分析

下面通过分析8个重要的CVE漏洞来说明TLS/SSL协议的脆弱性和面临的风险,并介绍了BEAST攻击、BREACH攻击、CRIME攻击、DROWN攻击、FREAK攻击、Logjam攻击、POODEL攻击等。

1.1 SWEET32(CVE-2016-2183)

64位分组大小的传统分组密码如DES或3DES在CBC模式下使用,易受到攻击。当使用CBC模式操作時,攻击者可使用生日攻击来识别64位分组密码中存在的碰撞。当碰撞发生时,这意味着输入与输出相同,使得可以执行BEAST(Browser Exploit Against SSL/TLS)攻击来渗透加密的数据。

1.2 FREAK(CVE-2015-0204)

FREAK(Factoring RSA Export Keys)攻击者可以拦截受影响的客户端与服务器之间的https链接,并强制其使用弱安全强度的出口RSA密钥(美国曾限制出口高强度密码,如密钥长度大于512位的RSA)。当TLS/SSL客户端使用较弱的密钥交换方法时,攻击者可以破解正在使用的密钥,并使用破解的密钥在通信期间解密窃取数据。

1.3 DROWN(CVE-2016-0800)

DROWN(Decrypting RSA using Obsolete and Weakened eNcryption)攻击的普通形式需要一个支持SSLv2协议的服务器,攻击者对该服务器发起RSA padding oracle攻击将它当作一个预言机,可以解密其他使用同一私钥的RSA密文。该攻击表明SSLv2服务器的存在不仅是不安全的,而且是有害的。

1.4 Logjam(CVE-2015-4000)

Logjam漏洞是针对TLS协议(1.2及更早版本),中间人攻击者执行降级攻击,并使用Diffie-Hellman密钥交换协议和受出口限制的密码(DHE_EXPORT)。DHE的安全性以离散对数的困难性为基础。但存在一种攻击可以对常用素数事前进行大量预计算,从而缩短求离散对数的时间,比如针对512 bit的素数,漏洞披露时求离散对数的时间可缩短到1 min。该攻击还表明2 048 bit的DHE也是不安全的,应当升级到ECDH,即椭圆曲线上的DH密钥交换协议。

1.5 BREACH(CVE-2013-3587)

BREACH代表通过自适应压缩超文本进行浏览器检测和渗透。与CRIME相似之处是利用HTTP压缩中的漏洞,允许攻击者识别页面中是否存在文本。BREACH攻击基本流程为:当页面上发生文本重复时,删除重复的术语,有助于减小页面的大小。这可以用于识别现有的页面内容,下面是Web应用程序的示例,显示当前登录的用户在页面中反映的用户名:第一步,输入您认为不存在于搜索参数中的用户名;第二步,注意返回页面的大小;第三步,发送您认为存在的用户名的其他搜索请求;第四步,注意返回页面的大小,如果用户名与登录用户名匹配(确认存在),页面大小对比上次将会缩小。通过分析响应的大小可以预测文本,实际上没有流量被“解密”。为了使BREACH攻击成功地渗透数据,必须有一种机制来反映渲染页面中的用户输入,并且服务器必须支持HTTP压缩。

1.6 POODEL SSLv3(CVE-2014-3566)

Google的安全小组在2014年10月14日发现了POODLE攻击(Padding Oracle On Downgraded Legacy Encryption)。该漏洞利用了SSLv3处理填充字节的方式——密码块链接(CBC)。该缺陷允许中间人攻击者在少于256个SSLv3连接的条件下解密密文的所选字节,攻击者可利用此漏洞绕过身份验证机制并执行未授权操作。

1.7 CCS注入漏洞(CVE-2014-0224)

某些版本的OpenSSL存在弱点,允许客户端和服务器通过特制的握手包来强制使用弱密钥进行通信。允许中间人攻击者解密和修改客户端与服务器之间的流量。受影响的OpenSSL版本有OpenSSL before 0.9.8za,OpenSSL 1.0.0 before 1.0.0m和OpenSSL 1.0.1 before 1.0.1。

1.8 HeartBleed(CVE-2014-0160)

心脏出血是以OpenSSL处理TLS和DTLS心跳扩展数据包的方式发现了一个缺陷,允许攻击者从加密的TLS/DTLS数据中公开信息。恶意客户端可以发送特制的TLS或DTLS Heartbeat数据包,以便从连接的客户端或者服务器的每个请求中获得内存部分中的敏感信息,诸如私钥(由服务商提供,用于加密数据)、实际用户的姓名、用户名和密码,允许攻击者窃听通信并窃取数据。

2 漏洞检测

下文将使用testssl工具对以上攻击方法进行测试,其间测试了url:www.jianshu.com。类似的SSL/TLS安全性检测工具包括SSLyze.the Qualys SSL server test.ImmuniWeb SSL Security Test.CryptCheck.CypherCraft.testssl.sh以及keycdn.com scanner等。

2.1 SWEET32(CVE-2016-2183)

使用命令:./testssl.sh www.jianshu.com可查看到服务器是否存在SWEET32相关的漏洞问题,结果表明,jianshu.com不存在此漏洞。

2.2 FREAK(CVE-2015-0204)

使用命令:./testssl.sh -E www.jianshu.com,确保服务器支持密码类型不包含出口限制级密码,示例如图1所示。

2.3 DROWN(CVE-2016-0800)

使用命令:./testssl.sh -D www.jianshu.com检测是否存在DROWN漏洞。显示结果提示,该网站并不是易受攻击的。

2.4 Logjam(CVE-2015-4000)

使用命令:./testssl.sh -J www.jianshu.com检测Logjam漏洞是否存在。结果表明,该网站没有使用出口限制级密码,也没有使用常用素数。

2.5 BREACH(CVE-2013-3587)

使用命令:./testssl.sh -B www.jianshu.com检测服务器是否易受BREACH攻击,结果如图2所示。

2.6 POODEL SSLv3(CVE-2014-3566)

使用命令:./testssl.sh -O www.jianshu.com检测POODEL相关的漏洞是否存在,结果显示如图3所示,这表明jianshu网站不存在POODLE漏洞,而且能抵御降级攻击。

2.7 CCS注入漏洞(CVE-2014-0224)

使用命令:./testssl.sh -I www.jianshu.com检测服务器是否存在CCS注入漏洞。结果显示,jianshu网站不存在此漏洞。

2.8 HeartBleed(CVE-2014-0160)等其他漏洞

使用命令:./testssl.sh www.jianshu.com可以查看很多testssl.sh支持的漏洞检测,如图4所示。

3 结语

本文介绍了TLS/SSL的相关漏洞,并使用testssl.sh对TLS/SSL相关漏洞进行了检测。testssl.sh工具可以有效地检测出网站的TLS/SSL安全网络传输协议是否存在相關的漏洞,从而做出相应的改进或解决相应的问题,提高网站的安全性。

参考文献:

[1]韦俊琳,段海新,万涛.HTTPS/TLS协议设计和实现中的安全缺陷综述[J].信息安全学报,2018(2):1-15.

[2]裴倩倩.基于OpenSSL的安全密钥漏洞及其攻击方法研究[D].北京:华北电力大学,2017.

[3]赵仁.基于SSL的中间人攻击检测与防范[D].天津:天津大学,2017.

[4]张生财.OpenSSL Heartbleed漏洞分析与研究[J].信息安全与技术,2014(11):42-43.

[5]强小辉,陈波,陈国凯.OpenSSL HeartBleed漏洞分析及检测技术研究[J].计算机工程与应用,2016(9):88-95.

[6]左朝顺.面向SSL Error-Handling漏洞的自动发现方法研究[D].济南:山东大学,2016.