前段时间写的漏洞的分析报告贴上来~
OpenSSlHeartBleed 漏洞分析及验证
一.漏洞爆出
OpenSSL是一个使用非常广泛的开源加密库,用来实现网络通信的加密。本次爆出的OpenSSL 是TLS心跳造成远程信息泄露漏洞 (CVE-2014-0160)
在处理TLS心跳扩展中缺失了边界检查,可导致服务器端64K内存信息的泄露
影响版本:OpenSSL Project OpenSSL 1.0.2-beta
OpenSSL Project OpenSSL 1.0.1
漏洞公布的信息
http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html
二.漏洞成因
TLS心跳延长首次记载是在RFC6520,心跳被用作“保持活动”的数据包,这样的加密连接的两端都同意保持会话打开,即使他们没有交换任何官方数据。因为心跳由一个答复,并匹配响应,不仅使会话是确认开放的,也表明终端对终端的连接是否正常工作
上面这个链接是漏洞发现者的分析,我们这里简要说明下这个漏洞的成因
心跳请求:
OpenSSL heartbeat request code looks like this:
unsigned int payload = 18; /* Sequencenumber + random bytes */
unsigned int padding = 16; /* Use minimumpadding */
/* Check if padding is too long, payloadand padding
* must not exceed 2^14 - 3 = 16381 bytes intotal.
*本人注:在RFC6520中要求心跳最大尺寸为2^14(16K)个字节
*其实这个地方通过发送心跳的包来看,这个地方限制在了14个字节
*其他三个字节分别为1