Как выяснилось, операционная система Android использует крайне уязвимые RC4 и MD5 в качестве первого шифра по умолчанию для всех SSL-соединений. Проблема затрагивает приложения, в которых явно не прописано использование других шифров, то есть де-факто почти все приложения Android.

Что самое интересное, комбинацию RC4-MD5 стали использовать по умолчанию с декабря 2010 года, когда состоялся релиз Android 2.3. До этого момента в SSL использовалась более сильная криптография. Первым шифром по умолчанию была комбинация DHE-RSA-AES256-SHA.

Расследование показало, что ослабление шифра по умолчанию произошло перед выходом Android 2.3. До этого момента Android просто использовал стандартный список OpenSSL, однако сделанное сотрудниками Google в мае 2010 года изменение в коде добавило в Android собственный список шифров, который соответствует стандартам CipherSuite из JDK 6, принятым в 2002 году.

public static String[] getDefaultCipherSuites() {
-       int ssl_ctx = SSL_CTX_new();
-       String[] supportedCiphers = SSL_CTX_get_ciphers(ssl_ctx);
-       SSL_CTX_free(ssl_ctx);
-       return supportedCiphers;
+        return new String[] {
+            "SSL_RSA_WITH_RC4_128_MD5",
+            "SSL_RSA_WITH_RC4_128_SHA",
+            "TLS_RSA_WITH_AES_128_CBC_SHA",
...
+            "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
+            "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"
+        };
 }

Список шифров в Java обновился c выходом JDK 7, но в Android он остался старым из JDK 6.



Оставить мнение