为了更详细地了解这个问题,这里有一些相关信息:
The official description:
TLS 协议,以及 SSL 协议 3.0 和可能更早的版本,用于 Microsoft Internet Information Services (IIS) 7.0、Apache HTTP Server 2.2.14 和更早版本中的 mod_ssl、OpenSSL 0.9.8l 之前的版本、GnuTLS 2.8.5 Mozilla 网络安全服务 (NSS) 3.12.4 和更早版本、多个 Cisco 产品和其他产品无法将重新协商握手与现有连接正确关联,这允许中间人攻击者将数据插入 HTTPS会话,以及可能受 TLS 或 SSL 保护的其他类型的会话,方法是发送未经身份验证的请求,该请求由服务器在重新协商后的上下文中进行追溯处理,与“明文注入”攻击相关,即“Project Mogul”问题。
Details about the CVE and affected versions:
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3555
A thorough explanation of the vulnerability, its symptoms and possible solutions:
http://www.g-sec.lu/practicaltls.pdf
所以总结漏洞要求,TLS或SSLv3连接易受攻击的先决条件是:
1 服务器在连接中间和初始握手之后确认并接受完整的 TLS 重新协商
和
2 服务器假定两个 TLS 会话是与同一个客户端协商的
和
3 服务器将两个会话视为一个会话,并在应用层合并它们
话虽如此,根据上述要求,在端口 443 上对服务器进行的测试表明不允许重新协商:
易受攻击的服务器的一般示例
Openssl s_client –connect yourserver.com:443
GET / HTTP/1.0
Host:yourserver.com
R (Triggers renegotiation – if this works, the server accepts enegotiations
within an existing TLS session Req. #1)
CRLF
<server responds with content> (server merged both sessions Req. #2)
受保护的服务器
Openssl s_client –connect yourserver.com:443
R (Triggers renegotiation)
2860:error:1409444C:SSL routines:SSL3_READ_BYTES:tlsv1 alert no
renegotiation:./ ssl/s3_pkt.c:1053:SSL alert number 100
干杯!