【问题标题】:Android app downgrading TLS protocol to SSL 3.0Android 应用程序将 TLS 协议降级到 SSL 3.0
【发布时间】:2015-05-09 02:23:36
【问题描述】:

我对我帮助开发的一些 Android 移动应用程序进行了漏洞测试,发现了一些奇怪的行为。应用程序使用了默认的 Android 5.0.2 密码套件列表,其中包括旨在防止贵宾犬的 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 漏洞的攻击?

【问题讨论】:

  • security.stackexchange.com 是解决此类问题的更好论坛。
  • 谢谢 Steffen - 我会把它贴在那里。

标签: android security ssl


【解决方案1】:

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

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

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

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

这意味着:

  • 一个 TLS1.1 握手,其中包括到服务器的 TLS_FALLBACK_SCSV 支持 TLS1.2 会失败。
  • 包含 TLS_FALLBACK_SCSV 到仅支持 TLS1.1 的服务器的 TLS1.2 握手将成功(服务器将使用它支持的最高 TLS1.1 进行响应)

名称中的 SCSV 的意思是“Signalling Cipher Suite Value”——它只是一个信号,而不是实际的密码套件。

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

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

【讨论】:

  • 感谢 Nucc1 说得通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 2011-08-09
相关资源
最近更新 更多