涉及程序:
IE 5 / 5.5 / 6
描述:
IE SSL加密缺陷允许获得其它域的合法CA签发证书
详细:
Internet Explorer 在实现 SSL 加密的过程中存在一个缺陷,允许攻击者进行中间人攻击,而受害者不会得到任何提示和警告,根本无法发觉。
通常情况下是,如果一个 web 站点的管理员想为自己数据通讯提供SSL加密,就需要管理员在服务器端生成一个证书并由CA证书授权中心签发。并且产生的证书的识别名(Distinguished Name)字段中的公用名(Common Name)必须和使用服务器证书的主机的全名完全相同。
CA 在验证公用名(Common Name)和使用服务器证书的主机全名完全相同后,再签发证书并将证书返回。
现在我们假定管理员为增强站点 www.thoughtcrime.org 的安全性,使用SSL加密的证书签发过程如下:
[CERT - Issuer: VeriSign / Subject: VeriSign]
- [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org]
当一个 web 浏览器接收到这个证书时,必须首先验证公用名(Common Name)是否和使用服务器证书的主机全名完全相同,并且是否是由已知的CA证书签名。这种情况下攻击者不可能进行中间人攻击,因为此时不可能使用合法的CN名和合法的签名来替代证书。
然而,有时在一些比较复杂的情况下,为了方便进行本地授权,例如像 www.thoughtcrime.org 等站点的管理员会从本地授权中获得如下的证书链结构:
[Issuer: VeriSign / Subject: VeriSign]
- [Issuer: VeriSign / Subject: Intermediate CA]
- [Issuer: Intermediate CA / Subject: www.thoughtcrime.org]
当 web 浏览器接收到此信息时,它必须首先验证分支证书的公用名(Common Name)字段是否与它刚连接的那个域名匹配,该证书是否是由中间CA所签发,并且中间CA签发的证书是否由已知CA证书签发。最后,web 浏览器还应该检查所有中间证书是否有合法的CA Basic Constraints,也就是说这些分支证书是否有合法授权进行证书签发。
但是不幸的是,事实并不像用户想象的那样。在实际当中,由于 IE 浏览器并没有检查 CA Basic Constraints,
这样的话,攻击者只要有任何域的合法的CA签发证书,就能生成其它任何域的合法CA签发证书。
受影响浏览器:
Netscape 4.x 和 Mozilla 不受影响.
IE 5 / 5.5 / 6 受影响
攻击方法:
Exploit
作为一个恶意的 www.thoughtcrime.org 站点管理员,他能产生一个合法的证书并且从VeriSign请求获得签名:
[CERT - Issuer: VeriSign / Subject: VeriSign]
- [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org]
然后恶意管理员生成任何企图攻击的域的一个证书,并且使用自己的 CA 签名证书签名:
[CERT - Issuer: VeriSign / Subject: VeriSign]
- [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org]
- [CERT - Issuer: www.thoughtcrime.org / Subject: www.amazon.com]
此时由于 IE 浏览器并没有检查 www.thoughtcrime.org 证书的 CA Basic ConstraintsSince ,IE就会合法接收 www.amazon.com 域的证书链。
以上说明任何具有CA签名证书(和相应的私钥)的用户都能欺骗其它任何用户。
-------------------------
为了验证此缺陷,Mike Benham / moxie@thoughtcrime.org 提供了一个他自己写的小工具sslsniff-0.1.tar.gz ,大家不妨试一试.
解决方案:
微软目前尚无有效补丁,建议用户随时关注微软站点
作为临时解决方案:
* 暂时使用 Netscape 4.x 或 Mozilla 浏览器;
* 对于一些非常敏感的应用,在进行SSL连接时手工检查证书链,如果发现有中间证书可以认为正在遭受中间人攻击,立即采取相应保护措施。