SSL和TLS是怎么被绕过的

你觉得用了SSL和TLS的网站或者应用就一定很安全?

理论上来说是的,但实际上它们有多安全取决于实现SSL和TLS类库的程序员们的认真程度。

GnuTLS类库最近一个关于CVE-2014-0092的安全补丁引起了国外许多开发人员的关注。CVE-2014-0092安全漏洞被描述为“GnuTLS没有正确地处理X.509证书验证过程中出现的错误… 导致攻击者可以根据这个(漏洞)流程创建一个GnuTLS认为合法的证书”。

版本控制系统显示该漏洞自从2005年以来就一直存在。嗯,这显然是个大问题,大伙儿都意识到了。

为了解决这个安全漏洞,GnuTLS类库的维护者Nikos,同时也是RedHat的员工,随后提交了一个补丁。最后,他把bug的状态设置为关闭,新的GnuTLS类库也被生成并被推入更新渠道。

这个补丁及未打补丁前的安全漏洞的严重性在于,入侵者可以绕过网站所使用的安全套接字层协议(SSL)和传输层安全协议(TLS)的保护,从而监视所有使用该协议的应用的用户与服务器之间的加密通讯,并破解这些被加密的内容。由于这个Bug的影响,有超过200个依赖于GnuTLS实现关键SSL和TLS操作的操作系统(包括RedHat、Ubuntu和Debian发行版)和应用(Web应用、电子邮件等等)的安全受到了威胁。

这个数目显然还会不停地增长。

问题是怎么来的?

Apple经典的goto fail;安全漏洞

Apple经典的goto fail;安全漏洞

极具讽刺意味的是,CVE-2014-0092的安全补丁所犯的错误与Apple开发人员之前犯的“goto fail;”错误如出一辙。所不同的是,Apple的开发人员连续写了两个goto fail;导致第二个“goto fail;”后面的代码根本无法到达,而GnuTLS类库的维护人员则将证书验证函数中的“goto fail;”改成了“goto cleanup;”。

GnuTLS的“安全补丁”

有人调侃,这位兄弟一定是看了Apple的goto fail然后想“啊~让我看看我的代码是不是有这样的问题。然后,好吧,让我们把goto fail改成goto cleanup,搞定!”

GnuTLS的安全漏洞早在2008年就已经有开发人员提出。当时这个开发人员在OpenLDAP的邮件组中表示,GnuTLS类库的代码在比较证书的时候存在问题,并且整个类库的代码只是实现了非常基本的功能,对于复杂的情况并没有做适当处理。他的提议最后在质疑和讽刺中歪向了GPL协议的争执,没有任何下文。

目前的情况

安全研究人员正在研究这个漏洞的危及范围。目前来说,读者应该假设这是个严重的安全漏洞——因为很多使用GnuTLS类库的下游代码将会受到影响。例如,libcurl就依赖于GnuTLS类库。一些基于Debian和Ubunut操作系统,用于思科网络硬件的虚拟专用网络应用也会受到影响。

对此,美国约翰霍普金斯大学的加密学教授说:“这个修补糟糕透顶。”

是的,糟糕透顶,谁知道其它类似的类库有没有这种问题呢?

 

Implementing SSL/Tls Using Cryptography and Pki [平装]

Implementing SSL/Tls Using Cryptography and Pki [平装]

除非注明,本站文章均属原创。如转载本篇文章,请注明:转载自365IT新闻

本文地址: http://www.usit365.com/gnutls-security-bug/