Comprobación de Heartbleed para aplicaciones móviles y móviles

1

He ejecutado un detector de Heartbleed desde Lookout en mi teléfono Android. Dice:

  

La versión de openSSL se ve afectada por el error del corazón, pero la   el comportamiento vulnerable no está habilitado.

¿Qué significa no habilitado?

Puedo ver el archivo /system/lib/libssl.so en el teléfono y he encontrado openssl en él. Muestra 1.0.1c. ¿Eso significa que mi teléfono es vulnerable a un error del corazón?

Mi otra pregunta es: ¿Cómo puedo verificar si una aplicación de Android en particular es vulnerable o no? No quiero usar ninguna aplicación de terceros. He visto enlace pero quiero hacerlo con una aplicación. No sé el nombre de dominio al que se está comunicando la aplicación. ¿La aplicación agrupa las bibliotecas de OpenSSL con apk? Si es así, cómo encontrar la versión de OpenSSL que se está utilizando.

@Solution: tengo wriiten el módulo python que toma un APK y realiza la comprobación de la versión openSSL y la extensión de latido.

import zipfile
import os
import re

def heart_bleed(tempdir, msl_outputfile):
    parrent_tempdir = tempdir.split('tmp')[0]
    sslpattern = re.compile("1.0.1[a-f]")
    flagssl = False
    flagheartbleed = False

    msllst_heartbleed = []
    msc_vulid = "heartbleed"
    msc_infoseverity = "Info"
    msc_medseverity = "Medium"
    apkpath = ''
    if (parrent_tempdir):
        for root, dummy_dirs, files in os.walk(parrent_tempdir):
            for allfile in files:
                if allfile.endswith(".apk"):

                    apkpath = os.path.join(root, allfile)

        #print(apkpath)
        with zipfile.ZipFile(apkpath, "r") as msl_apkread:
            for i in msl_apkread.namelist():
                if i.endswith(".so"):
                    data = msl_apkread.read(i)
                    if "part of OpenSSL" in data:
                        start = data.index("part of OpenSSL")
                        resultdata = str(data[start:start+40])
                        sslversion = re.findall(sslpattern, resultdata)
                        if sslversion:
                            flagssl = True

                            if "tls1_heartbeat" in data:
                                flagheartbleed = True

        if flagssl and flagheartbleed:
            print("The App is using OpenSSL version " + sslversion[0] + " which is vulnerable to Heartbleed and Heartbeat extension is enabled."))
        elif flagssl or flagheartbleed:
            print("The App is using OpenSSL version " + sslversion[0] + " which is vulnerable to Heartbleed but Heartbeat extension is disabled."))

Por favor, comenta, ¿es correcto hacerlo?

    
pregunta Roshan Mehta 05.06.2014 - 22:02
fuente

2 respuestas

1

Heartbleed es un error con la función 'latido' en versiones vulnerables de SSL. Es por eso que el nombre 'heartbleed'. Su cheque indica que su versión es vulnerable, pero la función de latido no está habilitada.

    
respondido por el schroeder 05.06.2014 - 23:44
fuente
0

La función "SSL Heartbeat" es una parte opcional de la biblioteca OpenSSL, una que incluye casi todas las copias de la biblioteca. Parece que su teléfono es uno de los pocos sistemas que optaron por no incluirlo.

    
respondido por el Mark 06.06.2014 - 10:22
fuente

Lea otras preguntas en las etiquetas