¿Cómo puedo comprobar si una determinada aplicación de Android es vulnerable a heartbleed o no? No quiero utilizar ninguna aplicación de terceros. He visto https://github.com/musalbas/heartbleed-masstest/blob/master/ssltest.py pero quiero hacerlo con app. No sé el nombre de dominio al que se comunica la aplicación. La aplicación incluye las librerías OpenSSL con el apk, si es así, cómo encontrar la versión de OpenSSL que se utiliza.
@Solución: He wriiten módulo de python que toma un APK y hacer la comprobación de la versión openSSL y la extensión de latido del corazón.
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, comente si es correcto hacerlo.