Mensaje de advertencia de Google Play y OpenSSL

Resuelto Hyndrix asked hace 54 años • 0 respuestas

Acabo de recibir un correo electrónico de Google Play que dice:

Hola,

Una o más de sus aplicaciones ejecutan una versión desactualizada de OpenSSL, que tiene múltiples vulnerabilidades de seguridad. Debe actualizar OpenSSL lo antes posible. Para obtener más información sobre la vulnerabilidad de seguridad más reciente en OpenSSL, consulte http://www.openssl.org/news/secadv_20140605.txt .

Tenga en cuenta que, si bien no está claro si estos problemas específicos afectan su aplicación, las aplicaciones con vulnerabilidades que exponen a los usuarios a riesgos pueden considerarse "productos peligrosos" y estar sujetas a eliminación de Google Play.

Saludos,

Equipo de Google Play

©2014 Google Inc. 1600 Amphitheatre Parkway Mountain View, CA 94043

Preferencias de correo electrónico: ha recibido este anuncio de servicio de correo electrónico obligatorio para informarle sobre cambios importantes en su cuenta de Google Play.

No he incluido explícitamente OpenSSL en ninguna de mis aplicaciones. Las aplicaciones que utilizan el NDK de Android utilizan NDK 9d (el último). Las únicas bibliotecas nativas externas que uso son ffmpeg y OpenCV y algunas bibliotecas de publicidad que no incluyen código nativo.

¿Dónde más podría incluirse OpenSSL provocando esta advertencia?

Saludos,

Hyndrix avatar Jan 01 '70 08:01 Hyndrix
Aceptado

Escribí un script bash que mostrará las versiones OpenSSL de cualquier elemento vinculado estáticamente en su aplicación y si se incluyen métodos de latido TLS.

Esto funcionó en un puñado de APK que le lancé. La cadena de versión de OpenSSL se extrae específicamente con un número de versión y una fecha. Si Google marca el APK y no puede encontrarlo, relaje la expresión regular OpenSSL en el comando egrep para simplemente "OpenSSL" y vea a dónde lo lleva.

Coloque lo siguiente en un archivo, por ejemplo, testopenssl.sh

uso: ./testopenssl.sh APK_File

#!/bin/bash
sslworkdir="ssl_work_dir"
if [ ! -d $sslworkdir ]; then
  mkdir $sslworkdir
fi
unzip -q "$1" -d $sslworkdir
#Set delimiter to ignore spaces
IFS=$'\r\n'
#Create an array of OpenSSL version strings
opensslarr=($(egrep --binary-files=text -o -R -e "OpenSSL\s\d+\.\d+\.\d+\w+\s\d+\s\w+\s\d+" $sslworkdir/*))
#Stackoverflow syntax highlight fix closing 'block comment' */
if [ ${#opensslarr[@]} -gt 0 ]; then
    echo "Found OpenSSL versions"
    printf "%s\n" "${opensslarr[@]}"
    heartbeatarr=($(grep -R -E "(tls1_process_heartbeat|dtls1_process_heartbeat|dtls1_heartbeat|tls1_hearbeat)" $sslworkdir/*))
    #Stackoverflow syntax highlight fix closing 'block comment' */
    if [ ${#heartbeatarr[@]} -gt 0 ]; then
        echo "Files that contains heartbeat methods:"
    printf "%s\n" "${heartbeatarr[@]}"
    else
        echo "No libraries contain heartbeat methods"
    fi
else
    echo "Did not find OpenSSL"
fi
rm -rf $sslworkdir
caller9 avatar Jun 18 '2014 22:06 caller9

Según Eric Davis en la lista de correo de Discusiones de seguridad de Android en respuesta a la Alerta de seguridad: Está utilizando una versión altamente vulnerable de OpenSSL :

  1. Puede determinar qué aplicaciones utilizan OpenSSL a través de("$ unzip -p YourApp.apk | strings | grep "OpenSSL"")
  2. Actualice todas las versiones de OpenSSL vinculadas estáticamente a 1.0.1h, 1.0.0m o 0.9.8za. ( Nota de jww : esta versión cambiará con el tiempo a medida que se publiquen nuevas versiones de OpenSSL).
  3. Si está utilizando una biblioteca de terceros que incluye OpenSSL, notifique al tercero y trabaje con ellos para solucionar este problema.

Cuando reciba este mensaje, deberá actualizar tanto el NDK como el IDE que está utilizando. He visto informes de algunas versiones del NDK que incluyen un encabezado de nivel inferior. También sospecho que el IDE que estás utilizando podría proporcionar una versión de OpenSSL de nivel inferior (no uso los IDE en Android, por lo que no lo he encontrado).

Si no está utilizando OpenSSL directamente, los SDK proporcionan la versión vulnerable de OpenSSL. En este caso, debe actualizar sus SDK. Si necesita ubicar el nivel inferior de OpenSSL entre los SDK, consulte Cómo verificar qué dependencia causa la vulnerabilidad de OpenSSL .

Google también proporciona Actualización de su proveedor de seguridad para protegerse contra exploits SSL , pero sospecho que seguirá activando el mensaje porque parece ser una búsqueda de cadena básica.

A menudo es más fácil actualizar todo que intentar averiguar quién proporciona la versión de nivel inferior de OpenSSL. Después de dedicar tiempo a determinar quién lo proporciona, el elemento procesable es el mismo: actualizar el SDK. Entonces, ¿por qué perder el tiempo en ello? simplemente actualícelos todos y disfrute también de las otras correcciones de errores.


Sin embargo, todavía quedan preguntas abiertas: si uno usa la criptografía de libcrypto(por ejemplo ( RAND_byteso EVP_encrypt) y no las funciones SSL/TLS de libssl(por ejemplo, SSL_connect), ¿seguirá activando la advertencia? Es decir, ¿Google está escaneando el uso de funciones vulnerables, o Google está buscando la versión de OpenSSL a través de strings.

jww avatar Jun 15 '2014 21:06 jww

También tengo este problema porque la versión del SDK de Facebook que estoy usando no está actualizada. Entonces, si también lo estás usando, intenta usar la versión actualizada del SDK v3.21.1 de Facebook y esa advertencia se resolverá.

kads avatar Dec 22 '2014 05:12 kads

Si está utilizando cocos2dx, deberá actualizar la biblioteca curl. Descargue la biblioteca curl actualizada desde aquí http://cocostudio.download.appget.cn/Cocos2D-X/curl.zip

y reemplácelo con la biblioteca curl actual presente en cocos2dx.

Para estar seguro, actualice también la versión de openssl de su Mac, para esto siga este enlace http://javigon.com/2014/04/09/update-openssl-in-osx/

Ali Raza avatar Dec 17 '2014 07:12 Ali Raza