IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

浏览器中SSL加密缺陷

2005年12月02日
/

涉及程序:
IE 5 / 5.5 / 6

描述:
IE SSL加密缺陷允许获得其它域的合法CA签发证书


详细:
Internet Explorer 在实现 SSL 加密的过程中存在一个缺陷,允许攻击者进行中间人攻击,而受害者不会得到任何提示和警告,根本无法发觉。

通常情况下是,如果一个 web 站点的管理员想为自己数据通讯提供SSL加密,就需要管理员在服务器端生成一个证书并由CA证书授权中心签发。并且产生的证书的识别名(Distinguished Name)字段中的公用名(Common Name)必须和使用服务器证书的主机的全名完全相同。

CA 在验证公用名(Common Name)和使用服务器证书的主机全名完全相同后,再签发证书并将证书返回。

现在我们假定管理员为增强站点 的安全性,使用SSL加密的证书签发过程如下:

[CERT - Issuer: VeriSign / Subject: VeriSign]
-> [CERT - Issuer: VeriSign / Subject: ]


当一个 web 浏览器接收到这个证书时,必须首先验证公用名(Common Name)是否和使用服务器证书的主机全名完全相同,并且是否是由已知的CA证书签名。这种情况下攻击者不可能进行中间人攻击,因为此时不可能使用合法的CN名和合法的签名来替代证书。

然而,有时在一些比较复杂的情况下,为了方便进行本地授权,例如像 等站点的管理员会从本地授权中获得如下的证书链结构:

[Issuer: VeriSign / Subject: VeriSign]
-> [Issuer: VeriSign / Subject: Intermediate CA]

-> [Issuer: Intermediate CA / Subject: ]


当 web 浏览器接收到此信息时,它必须首先验证分支证书的公用名(Common Name)字段是否与它刚连接的那个域名匹配,该证书是否是由中间CA所签发,并且中间CA签发的证书是否由已知CA证书签发。最后,web 浏览器还应该检查所有中间证书是否有合法的CA BasicConstraints,也就是说这些分支证书是否有合法授权进行证书签发。

但是不幸的是,事实并不像用户想象的那样。在实际当中,由于 IE 浏览器并没有检查CA Basic Constraints,

这样的话,攻击者只要有任何域的合法的CA签发证书,就能生成其它任何域的合法CA签发证书。
受影响浏览器:

Netscape 4.x 和 Mozilla 不受影响.

IE 5 / 5.5 / 6 受影响


攻击方法:
Explorer
作为一个恶意的 站点管理员,他能产生一个合法的证书并且从VeriSign请求获得签名:

[CERT - Issuer: VeriSign / Subject: VeriSign]
-> [CERT - Issuer: VeriSign / Subject: ]


然后恶意管理员生成任何企图攻击的域的一个证书,并且使用自己的 CA 签名证书签名:

[CERT - Issuer: VeriSign / Subject: VeriSign]
-> [CERT - Issuer: VeriSign / Subject: ]

-> [CERT - Issuer: / Subject: ]


此时由于 IE 浏览器并没有检查 证书的 CA BasicConstraintsSince ,IE就会合法接收 域的证书链。

以上说明任何具有CA签名证书(和相应的私钥)的用户都能欺骗其它任何用户。

-------------------------
为了验证此缺陷,MikeBenham / 提供了一个他自己写的小工具sslsniff-0.1.tar.gz ,大家不妨试一试.

解决方案:
微软目前尚无有效补丁,建议用户随时关注微软站点


作为临时解决方案:

* 暂时使用 Netscape 4.x 或 Mozilla 浏览器;

* 对于一些非常敏感的应用,在进行SSL连接时手工检查证书链,如果发现有中间证书可以认为正在遭受中间人攻击,立即采取相应保护措施。


发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

哪些企业真正需要系统具备横向扩展能力
哪些企业真正需要系统具备横向扩展能力在此之前,你可能没有考虑过你的IT部门需要一个横向扩展(也称向外扩展)系统。在如...
DB2 10新功能:从Oracle迁移更容易
DB2 10新功能:从Oracle迁移更容易这里就有一些: 局部类型 此功能允许PL/SQL和SQL PL块在BEGINEND块中定义局部类型...

本类热点