2006-8-24 一、 背景 Internet Explorer的SSL实现存在问题,远程攻击者可以利用这个漏洞进行中间人攻击。 在通常情况下,WEB站点的管理员通过SSL进行通信加密,要实现加密通信,管理员需要生成证书并由CA证书授权中心签发,该WEB站点的URL会保存在证书的识别名小节中的CN(公用名)字段中。 CA会验证管理员是否合法拥有的CN字段中的URL,签发证书并返回证书。假定管理员尝试对www.thoughtcrime.org进行加密,就有如下的证书签发过程: [CERT - Issuer: VeriSign / Subject: VeriSign] -> [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org] 当WEB浏览器接收到这个证书时,必须验证CN字段是否与它刚连接的那个域名匹配,并且是否是由一个了已知的CA证书签名,这种情况下攻击者不可能使用合法的CN名和合法的签名来替代证书,所以不存在中间人攻击。 但是有些情况下,为了方便会使用本地授权,因此这种情况下www.thoughtcrime.org会从本地授权中获得如下的证书链结构: [Issuer: VeriSign / Subject: VeriSign] -> [Issuer: VeriSign / Subject: Intermediate CA] -> [Issuer: Intermediate CA / Subject: www.thoughtcrime.org] 当WEB浏览器接收到此信息时,它必须验证分支证书的CN字段是否与它刚连接的那个域名匹配,以及该证书是否是由中间CA所签发,并且中间CA签发的证书是否由已知CA证书签发。最后,WEB浏览器还应该检查所有中间证书是否有合法的CA Basic Constraints,也就是说这些分支证书是否有合法授权进行证书签发。 但Internet Explorer存在设计漏洞,没有检查CA Basic Constraints信息,这样,具有任意域一个名合法CA签发证书的攻击者可以生成任意其他域名的合法CA证书。 假设攻击者是www.thoughtcrime.org的合法管理者,他可以首先可以生成一合法证书并从VeriSign中请求签名: [CERT - Issuer: VeriSign / Subject: VeriSign] -> [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org] 然后为任意域如(www.amazon.com)生成一证书,并使用自己的证书进行签名: [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的Basic Constraints信息,IE就会按照这个证书链合法接收www.amazon.com域。 任何人拥有任何CA签发的证书(和相应的私钥)可以欺骗任何用户。 http://www.microsoft.com/technet/security/bulletin/MS02-050.mspx 二、 准备工作 1. 签发根CA n openssl genrsa -des3 -out myrootca.key 1024 n openssl req -new -key myrootca.key -out myrootca.req n openssl x509 -req -days 7305 -extfile rootca.conf -signkey myrootca.key -in myrootca.req -out myrootca.crt 2. 签发中级CA n openssl genrsa -out subca.key 1024 n openssl req -new -key subca.key -out subca.req n openssl x509 -req -days 3650 -sha1 -extfile subca.conf -CA myrootca.crt -CAkey myrootca.key -CAserial myrootca.srl -CAcreateserial -in subca.req -out subca.crt 三、 流程一:使用子CA签发服务器证书 1. 使用IIS产生一个证书请求名为certreq.csr 2. 使用中级CA签发一个服务器证书 openssl x509 -req -days 3650 -sha1 -extfile server.conf -CA subca.crt -CAkey subca.key -CAserial subca.srl -CAcreateserial -in certreq.txt -out serverbysubca.crt 3. 安装服务器证书到IIS 4. 正常建立SSL连接 四、 流程二:使用根CA签发的服务器证书签发下级服务器证书 1. 使用根CA签发一个服务器证书 openssl x509 -req -days 3650 -sha1 -extfile server.conf -CA myrootca.crt -CAkey myrootca.key -CAserial myrootca.srl -CAcreateserial -in myhost.req -out myhost.crt 2. 使用IIS产生一个证书请求名为certreqsub.txt 3. 使用服务器证书签发一个下级服务器证书 openssl x509 -req -days 3650 -sha1 -extfile server.conf -CA myhost.crt -CAkey myhost.key -CAserial myhost.srl -CAcreateserial -in certreqsub.txt -out serverbyhost.crt 4. 安装到服务器证书到IIS,能够启动SSL,但是无法验证 5. 在IE里面导入根CA签发的服务器证书到“中级证书颁发机构” 结果直接察看证书显示为: 此时,IIS的SSL无法建立。 五、 结论 此漏洞现于2002年,对于安装了补丁的系统就不存在这样的漏洞。 六、 附录A 签发证书的扩展项 1. 根CA :rootca.conf basicConstraints = CA:true keyUsage = keyCertSign, cRLSign 2. 子CA:subca.conf basicConstraints = CA:true,pathlen:0 keyUsage = keyCertSign, cRLSign nsCertType = sslCA, emailCA, objCA 3. 服务器SSL证书:server.conf basicConstraints = CA:false keyUsage=digitalSignature,keyEncipherment,dataEncipherment, keyAgreement nsCertType = server extendedKeyUsage = serverAuth, msSGC, nsSGC 七、 附录B 已现的SSL漏洞 1. 当IE通过点击图像
或者在帧>中连接到一个服务器时,IE只检查SSL证书是否是由可信的根服务商提供的,而没有验证证书有效期以及其他内容。(MS00-039) 2. 在同一个IE会话中,一旦成功的建立了SSL连接,对于新的SSL连接,IE将不再对证书进行任何的检查。(MS00-039) 3. 证书认证中间人攻击漏洞:IE不检查中间证书是否有合法的CA Basic Constraints,任何人拥有任何CA签发的证书(和相应的私钥)可以签发下级证书来欺骗任何用户。(MS02-050) Certificate Validation Flaw Could Enable Identity Spoofing (Q328145) 4. SSL漏洞 CAN-2004-0120 风险级别 高 微软安全套接层(Microsoft Secure Sockets Layer)函数库提供对安全通讯协议的支持,这些协议包括Transport Layer Security 1.0 (TLS 1.0), Secure Sockets Layer 3.0 (SSL 3.0),Secure Sockets Layer 2.0 (SSL 2.0), 和Private Communication Technology 1.0 (PCT 1.0)协议。windows的SSL函数库没有有效检查输入的数据,恶意的攻击者可以构造特殊的SSL请求,这些请求可能导致win2000和winxp的SSL函数库停止响应,而在win2003中可能会导致系统重新启动。(MS04-011) 八、 附录C 打了补丁的浏览器报错信息
对于“证书认证中间人攻击漏洞”的验证
最新推荐文章于 2023-07-01 22:43:21 发布