一、HeartBleed漏洞的描述
近日,OpenSSL报出严重的安全漏洞,被称之为“心脏出血”漏洞。通常情况下,SSL/TLS加密用于互联网通信中,如Web、电子邮件、即时消息(IM)和一些虚拟专用网络(VPN)的通信安全和隐私保护。OpenSSL在实现SSL/TLS的加密(心跳)处理逻辑时,对于数据包中的长度域不加检查,攻击者利用这一点,获取数据包中可以达到64K内存的用户数据。使得攻击者可能从数据中获得用户名,用户密码,邮箱名,证书,私钥等隐私信息。
HeartBleed漏洞在MITRE官网上被称为CVE-2014-0160。受影响版本包括OpenSSL1.0.1、1.0.1a 、1.0.1b 、1.0.1c 、1.0.1d 、1.0.1e、1.0.1f、OpenSSL 1.0.2 beta1等。
二、HeartBleed漏洞攻击双向存在
HeartBleed漏洞存在于OpenSSL实现TLS/DTLS(传输层安全协议)的心跳扩展(RFC6520)。
由于SSL交互双方都可以发送“心跳”请求,因此当这个漏洞被攻击者利用时,存在隐私数据在服务器端和客户端双向泄露的风险。
三、HeartBleed漏洞对Android设备的影响
漏洞影响了数以百万计的网站,也影响到大量的Android智能手机和平板电脑。Google官方声明,HeartBleed漏洞在Android用户中只存在于易受攻击的Android版本,具体版本是Android的4.1.1。Google还没有给出具体的修补细节,只是说Android4.1.1的修补已经交付给Android4.1.1的合作伙伴。
Google最新数据显示,目前34.4%的Android设备都采用了Android 4.1.x. 而Android的4.1.1构成了整体的Android4.1.x版的一部分。
Android版本分布图
以下我们以ROM为4.1.1 JROO3L的小米手机为例,看看其是否使用了存在漏洞的OpenSSL版本。
从设备上导出/system/lib/libssl.so文件并查看其导出函数:
dtls1_procss_heartbeat导出函数即为处理SSL心跳逻辑。
查看OpenSSL版本号为:
可以查找到OpenSSL版本号为“1.0.1c”,的确包含在受影响版本中。
四、利用HeartBleed漏洞攻击Android设备潜在方式
具体的攻击流程如下:
1、黑客建立触发请求客户端HeartBleed漏洞的HTTPS攻击服务器。
2、黑客通过社会工程学散播(短信、微博、微信、QQ等)相关信息,骗取用户点击链接地址访问HTTPS攻击服务器。
3、当用户在相关客户端(浏览器、微博、微信、QQ等)中点击链接地址后,相关客户端通过调用系统OpenSSL库访问服务器。
4、HTTPS攻击服务器发送心跳数据包触发相关客户端HeartBleed漏洞。相关客户端(浏览器、微博、微信、QQ等)返回随机64K内存数据到HTTPS攻击服务器。
漏洞的手机攻击途径图
百度安全实验室建议Android4.1.1用户,及时更新系统,请勿轻易打开陌生连接。
五、参考文献:
http://www.ibtimes.co.uk/heartbleed-bug-millions-android-smartphones-tablets-risk-1444175
http://androidcommunity.com/heartbleed-only-an-issue-for-android-4-1-1-20140409/
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160
https://tools.ietf.org/html/rfc6520