常见漏洞以及修复方法

Drown漏洞

 "DROWN"全称是 Decrypting RSA with Obsolete and Weakened Necryption,是指"利用过时的脆弱加密算法来对RSA算法进破解",主要针对SSLv2协议漏洞来对TLS进行跨协议攻击。

 "DROWN攻击"主要影响支持SSLv2的服务端和客户端。SSLv2是一种古老的协议,许多客户端已经不支持使用,但由于配置上的问题,许多服务器仍然支持SSLv2。

 "DROWN"使得攻击者可以通过发送probe到支持SSLv2的使用相同密钥的服务端和客户端解密TLS通信。例如:将相同的私钥同时用在Web服务端和Email服务端,如果Email服务支持SSLv2,但web服务不支持,那么攻击者仍然能够利用EMAIL服务的SSLv2漏洞获取到web服务器的TLS连接数据。

如何预防DROWN漏洞?

  1. 这里建议用户不要用相同的私钥生成多张SSL证书,也不要将同一张SSL证书部署在多台服务器上。建议在每台服务器上均部署独立的SSL证书,这样攻击者将无法利用其它服务器的漏洞,对关键服务器进行攻击,即使其中一台服务器出现问题也不会影响其他服务器的正常运行。
  2. 关闭所有服务器的SSLv2协议。
  3. 如果使用了OpenSSL,大家可以参考OpenSSL官方给出的DROWN修复指南

FREAK漏洞

FREAK漏洞(全称:Factoring RSA Export Keys,中文:分解RSA出口级密钥)是SSL/TLS协议中的密码学安全漏洞。

1990年代时,美国对于货物的出口设立了一些规定,从而引入了这个漏洞。规定中指出,美国软件制造商出口的软件只能使用512位及以下的RSA加密。此举是为了便于NSA破译加密。时至2015年,随着计算能力的发展,破解这种加密已经不再是政府机构才能做到的事,任何人只要拥有充足的计算资源,就能通过普通数域筛选法加上约100美元的云计算服务轻而易举地将其破译。这个漏洞还能和中间人攻击结合利用,只要先破译网站的512位弱加密,再进行中间人攻击,就能使任何允许使用512位出口级密钥的网站失去安全保障。此漏洞于2015年发现,但从1990年代开始就已经存在。

如何预防FREAK漏洞?

RSA 的加密长度应大于 2048 位或使用 ECC 算法进行加密。

服务器支持不安全的重协商会受到MITM漏洞攻击

如何预防MITM漏洞?

  1. 升级到支持安全的重协商
  2. 禁止client发起重协商:目前看来似乎是个不错的选择;
  3. 速率限制:对新到来的TLS连接和重协商的速率进行限制;
  4. 使用SSL加速卡:通过极大地提高server对handshake的处理能力来增加攻击的成本,但可能攻击者只增加一到两台主机进行攻击就可以使得此措施无效。
  5. 使用安全重协商,为了解决中间人攻击的问题,【RFC5764】提出了“安全重协商”机制。本质很简单,就是关联两次握手,方式是提供了一个新的扩展(renegotiation_info)。SSLv3/TLS 1.0不支持扩展,为了使其支持安全重协商,client需要发送TLS_EMPTY_RENEGOTIATION_INFO_SCSV(0xFF)密码套件(缩写为SCSV)。

安全重协商的流程如下:

  1. 在某个连接的第一次握手期间,双方通过renegotiation_info扩展或SCSV套件通知对方自己支持安全重协商;
  2. 在handshake过程中,client和server都分别记录Finish消息之中的client_verify_data和server_verify_data;
  3. 重协商时client在ClientHello中包含client_verify_data,server在ServerHello中包含client_verify_data和server_verify_data。对于受害者,如果协商中不会携带这些数据则连接无法建立。由于Finished消息总是加密的,攻击者无法得到client_verify_data和server_verify_data的值。

POODLE漏洞

OODLE即Padding Oracle On Downgraded Legacy Encryption.是安全漏洞(CVE-2014-3566)的代号,俗称“贵宾犬”漏洞。

此漏洞是针对SSL3.0中CBC模式加密算法的一种padding oracle攻击,可以让攻击者获取SSL通信中的部分信息明文,如果将明文中的重要部分获取了,比如cookie,session,则信息的安全出现了隐患。

从本质上说,这是SSL设计上的缺陷,SSL先认证再加密是不安全的。

如何预防POODLE漏洞?

禁用sslv3协议。

CVE-2016-2107漏洞

OpenSSL 漏洞安全预警(CVE-2016-2107)

CCS(CVE-2014-0224)漏洞

CVE-2014-0224 ChangeCipherSpec 注入

按照TLS的协议 在固定的时间顺序内服务端发送和接收ChangeCipherSpec(更改密钥规格)数据,但是实际上openssl的实现:

服务端在发送时是按照时间线的顺序发送,接收时却没有检查顺序,导致攻击者可以构造伪造的ChangeCipherSpec(比如使用空的主密钥),导致可以中间人攻击解密两端加密信息。

如何预防CCS(CVE-2014-0224)漏洞?

漏洞产生必须客户端和服务端都使用了受影响版本的openssl。

服务端已知的受影响版本 OpenSSL 0.9.8y及之前的版本,1.0.0m之前的1.0.0版本,1.0.1h之前的1.0.1版本。

Heartbleed漏洞

心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多。

如何预防Heartbleed漏洞?

升级 OpenSSL 到最新版本,受影响的OpenSSL版本为1.0.1至1.0.1f(含)。较新版本(1.0.1g以上)及先前版本(1.0.0分支以前)不受影响。

Logjam漏洞

该漏洞影响Diffie-Hellman的加密协议,该协议作为HTTPS, SSH, SMTPS协议的加密算法使用。

攻击者使用该漏洞可轻易对受影响网络进行中间人式攻击,降低加密强度,使得加密数据更加容易获取。

如何预防Logjam漏洞?

浏览器升级至最新版本,服务器最好禁用掉对外置加密系统的支持,并创建2048位的Diffie-Hellman加密组,同时升级至最新版本的OpenSSH。openssl-0.98m之后的版本就已经修复了该漏洞。

ROBOT漏洞

TLS ROBOT Attack漏洞

CRIME漏洞

CRIME(英语:Compression Ratio Info-leak Made Easy,意思为:压缩率使信息容易泄露)是一种可攻击安全隐患(Exploit),通过它可窃取启用数据压缩特性的HTTPS或SPDY协议传输的私密Web Cookie。在成功解读身份验证Cookie后,攻击者可以实行会话劫持和发动进一步攻击。CRIME被分配为CVE-2012-4929。

如何预防CRIME漏洞?

CRIME可以被禁用压缩设置解决,无论是在客户端的浏览器中禁用压缩,还是由网站根据TLS的协商特性阻止使用数据压缩都可以达到效果。