一、Heartbleed的知识点
1.引言:
最初人们为了网络通信安全,就开始使用安全协议进行加密通信,SSL(Secure Socket Layer)就是一种安全协议。随着开源软件的流行,有人写了一款叫 OpenSSL 的开源程序供大家方便地对通信进行SSL加密,后来这款软件便在互联网中被广泛应用。我们在浏览器地址栏常见的 https 前缀的网址以及那把小锁图标,通常就是指该网站经过 SSL 证书加密。
OpenSSL 有一个叫 Heartbeat (心跳检测)的拓展,问题就出在这个拓展上,这也是漏洞被命名为“心脏出血”的直接原因。
所谓心跳检测,就是建立一个 Client Hello 问询来检测对方服务器是不是正常在线 ,服务器发回 Server hello,表明正常树立SSL通讯。就像我们打电话时会问对方 “喂听得到吗?”一样。
每次问询都会附加一个问询的字符长度 pad length,bug 来了,如果这个 pad length 大于实际的长度,服务器仍是会回来相同规模的字符信息,于是形成了内存里信息的越界访问。
就这样,每发起一个心跳,服务器就能泄露一点点数据(理论上最多泄露 64K),这些数据里可能包括用户的登录账号密码、电子邮件甚至是加密秘钥等信息,也可能并没有包含这些信息,但攻击者可以不断利用 “心跳”来获取更多的信息。就这样,服务器一点一点泄露越来越多的信息,就像是心脏慢慢在出血,心脏出血漏洞的名字由此而来。
2、Heartbleed 的概述
Heartbleed漏洞,也叫心脏滴血漏洞。是流行的OpenSSL加密软件库中的一个严重漏洞。这个弱点允许窃取在正常情况下被用来保护互联网的SSL/TLS加密保护的信息。SSL/TLS为网络、电子邮件、即时消息(IM)和一些虚拟专用网络(VPNs)等应用程序在互联网上提供通信安全和隐私。
Heartbleed漏洞允许互联网上的任何人读取受OpenSSL漏洞保护的系统的内存。这就损害了用于标识服务提供者和加密通信、用户名和密码以及实际内容的秘钥。这允许攻击者窃听通信,直接从服务和用户那里窃取数据,并模拟服务和用户。
3,“ Heartbleed”简介:
Heart bleed漏洞是由于未能在memcpy()调用受害用户输入内容作