Android应用将TLS协议降级为SSL 3.0

时间:2015-03-07 15:24:52

标签: android security ssl

我对我帮助开发的一些Android移动应用程序进行了漏洞测试,我发现了一些奇怪的行为。应用程序使用默认的Android 5.0.2密码套件列表,其中包含旨在防止Poodle的TLS_FALLBACK_SCSV(0x5600)套件。请参阅下面的密码套件列表:

密码套件:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA(0xc009) 密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA(0xc00a) 密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xc013) 密码套件:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(0xc014) 密码套件:TLS_DHE_RSA_WITH_AES_128_CBC_SHA(0x0033) 密码套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA(0x0039) 密码套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA(0x0032) 密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA(0x0038) 密码套件:TLS_ECDHE_ECDSA_WITH_RC4_128_SHA(0xc007) 密码套件:TLS_ECDHE_RSA_WITH_RC4_128_SHA(0xc011) 密码套件:TLS_RSA_WITH_AES_128_CBC_SHA(0x002f) 密码套件:TLS_RSA_WITH_AES_256_CBC_SHA(0x0035) 密码套件:TLS_RSA_WITH_RC4_128_SHA(0x0005) 密码套件:TLS_EMPTY_RENEGOTIATION_INFO_SCSV(0x00ff) 密码套件:未知(0x5600)

当我查看网络捕获中的TLS请求序列时,它通过SSL 3.0发生,即使密码套件列表中不支持SSL3。

这看起来不像贵宾犬。我发现最有趣的是协商的密码套件(在Sever Hello请求中)是TLS_RSA_WITH_AES_128_CBC_SHA。

这是否意味着使用SSL3_RSA_WITH_AES_128_CBC_SHA密码套件有效地进行了加密会话?它很容易受到Poodle用于恢复纯文本数据的相同SSL 3.0 CBC漏洞的影响吗?

1 个答案:

答案 0 :(得分:1)

密码套件与协议版本不同。有两种协议版本:握手协议和记录层协议。

握手协议是客户端和服务器交换安全通信所需参数的协议。记录协议是它们之间来回发送的SSL记录的格式(通常客户端使用相同的版本)。

TLS_FALLBACK_SCSV并非旨在防止POODLE,它旨在帮助缓解DOWNGRADE攻击。

当该套件出现在客户端显示的列表中时,它会通知服务器仅使用它支持的最高TLS版本,前提是此TLS版本等于或低于客户端在其中指定的版本。 ;客户你好。

这意味着:

  • 包含TLS_FALLBACK_SCSV到服务器的TLS1.1握手 支持TLS1.2将失败。
  • 包含TLS_FALLBACK_SCSV到仅支持TLS1.1的服务器的TLS1.2握手将成功(服务器将使用它支持的最高TLS1.1响应)

名称中的SCSV表示"信令密码套件值" - 它只是一个信号,而不是一个真正的密码套件。

我相信TLS1.0是可以使用此扩展程序的最小TLS版本。

参考:https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-05