最近在 slashdot http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/上发表的文章说,使用 TLS 1.0 保护的连接容易受到中间人解密(BEAST 漏洞利用)的影响。我有一个托管在 Google Appengine 上的应用程序,它似乎使用 TLS 1.0。它严重依赖 javascript,所以我不能建议我的用户将其关闭。我能做什么?
我可以对我的服务器上的 TLS 1.0 javascript 注入漏洞做些什么?
野兽攻击理论
SSL 使用公钥和对称密钥算法的各种组合。(OpenSSL 的列表)当对称算法是块算法(与流相对)时,使用密码块链接——前一个块是新块输入的一部分。
我们现在看到的问题是基于实现的,至少早在 2002 年就已经讨论过了。这个CBC 讨论指出,在大多数协议中构建选定的明文通常非常困难。带有 Javascript 的 HTTP 允许这种情况发生。
为什么我们还在受苦
我们应该摆脱 TLS 1.0 并转向 1.2。但是,当然,我们仍然生活在一个使用 SSL 2 的世界中。更重要的是,即使您可以在服务器上切换到更新的 TLS 版本,无处不在的NSS库也不支持它。这意味着您不会获得 Firefox 或 Chrome 访问者。
您可以使用流密码 (RC4),这样可以防止攻击。我不知道是否使用了我的第一个链接中的空打开消息,或者这将如何影响各种客户端实现。
你的个人反应
帮助将 TLS 1.2 写入 NSS 库。让其他人知道您将安全视为重中之重。如果您有时间,请进行一些研究,测试哪些非标准 SSL 配置可以工作以及它们会对哪些平台产生负面影响。如果您发现 RC4 适用于所有内容,请发布它,以便我们知道它已经过测试。
如果您没有时间或能力...等等。这种情况经常发生,但至少有几个人对此感到不安。
最好的办法就是等待。没有足够的关于攻击的已知细节来评估它是否是真实的东西,或者如何修复它。一些细节暗示了实现中的缺陷,并且可能在相关浏览器中得到修复。
将基于 rc4 的密码套件移至列表顶部;该攻击似乎与 CBC 有关,如果是这种情况,rc4-sha 就不容易受到攻击。
更新 - 我们在这里发布了一份白皮书,详细说明了如何进行更改。在这里可用。澄清一下,出于实际考虑,协议版本在这里对您没有帮助-由于客户端支持不佳,服务器目前无法禁用 TLS1.0/SSL3,即使客户端启用了 1.1,您仍然可能面临降级攻击支持1.1。使用非 CBC 密码是我所知道的唯一有效的服务器端缓解措施。
此外,mail.google.com 已切换到不易受到攻击的 RC4,很可能 Google 应用引擎也已切换。如果您使用 SSL 访问该站点,您可以单击 URL 栏中的 SSL 指示符,单击“更多信息”并查看正在使用的密码。