一、漏洞简介
-
OpenSSL“心脏出血”漏洞(CVE-2014-0160)。这个漏洞使攻击者能够从内存中读取多达64 KB的数据。只要有这个漏洞的存在,在无需任何特权信息或身份验证的环境下,我们就可以从目标机器获取到用户名与密码、电子邮件以及重要的商业文档和通信等数据。
-
OpenSSL 有一个叫Heartbeat (心跳检测)的拓展,所谓心跳检测,就是建立一个 Client Hello 问询来检测对方服务器是不是正常在线 ,服务器发回 Server hello,表明正常树立SSL通讯。就像我们打电话时会问对方 “喂能听见我说话吗?”一样。
二、漏洞分析
-
每次问询都会附加一个问询的字符长度 payload length,如果这个 payload length 大于实际请求包的长度,服务器仍会返回payload length长度规模的字符信息,于是形成了内存里信息的越界访问。
-
OpenSSL“心脏出血”漏洞的问题出现在openSSL处理TLS心跳的过程中,TLS心跳的流程是:A向B发送请求包,B收到包后读取这个包的内容(data),并返回一个包含有请求包内容的响应包。请求包的内容(data)中包含有包的类型(type)和数据长度等信息。
-
当B收到A的请求包后,并没有的验证A包的实际长度,而是简单的把请求包data中说明的长度当作data的实际长度,于是当请求包中说明的长度与请求包数据实际长度不同时,问题就产生了。假设A构造一个请求包,它的实际内容长度只有1,而却告诉B的它的长度是65535,那么B