SSL 是一种理论,而其具体实现,就有好多了,firefox有自己的实现,旧版本的chrome有自己的实现,Openssl也属于实现的一种。

该漏洞并不是协议上的漏洞,而是针对某个实现的漏洞,说简单点就是:代码写的烂或者考虑不全面。

受影响的OpenSSL版本:

OpenSSL 1.0.2-beta

OpenSSL 1.0.1 - OpenSSL 1.0.1f

1:为什么叫 心血漏洞

SSL有一个特性,相当于TCP的keepalive 特性,即一端发送特定的报文到对端,如果对端收到,并且回复,就表示对方未断开连接,并且自己也不会断开连接。

该功能的英文名叫做:Heartbeat ,发现漏洞的人称这个漏洞为Heartbleed,翻译成中文就叫心血漏洞。

该功能在RFC 6520中详细描述,主要讲解了一些报文格式。

2:心血漏洞原理

简要概述就是说,OpenSSL在解析 对端发送的Heartbeat 请求报文的时候没有判断边界值。

我们先来看看Heartbeat 请求报文格式:

第一部分 类型 Content type

第二部分 协议版本 Version

第三部分 长度 Length

Length指定了后面数据的长度。

而Length 指定的数据(即上图中的Encrypted Heartbeat Mesaage) 包括2部分:
1:序号
2:填充
协议要求,Heartbeat 响应的序号,必须和Heartbeat  请求的序号相同,padding是随机值。

但是我们看看openssl是怎么解这个报文的:

开始时,p 指向的是read_buf,OpenSSL的流程就是解析这个报文。

提取 报文 中 Length 字段, 赋值到payload中,并未判断报文 后面的长度是否是 Length 指定的长度。因为客户端可能指定了payload 长度是0x4000,而后面的实际数据起始就1个字节。到目前为止,还未出现致命的信息泄露问题。

紧接着,准备构造Heartbeat 响应:

上面说过,根据协议要求,Heartbeat 响应的序号,必须和Heartbeat  请求的序号相同
    OpenSSL为了图方便,直接把 Heartbeat 请求报文拷贝过来了(因为请求报文中存在自己需要的序号)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

P1 指向了read_buf的payload,OpenSSL直接从read_buf中的payload起始处拷贝了payload 长度的数据到字节的write_buf。

read_buf一共也就16k长度,如果客户端故意写的payload 是64k,那么很显然,OpenSSL进程空间的(64k-16k)的内存(可能是会话结构体中的其他字段,包括存放私钥等其他私密信息的内存)透露给客户端了。

3:OpenSSL对该问题的修复如下


OpenSSL心血漏洞分析相关推荐

  1. 汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码

    OpenSSL 心血(HeartBleed)漏洞 是openssl 在 2014-04-07 发布的重大安全漏洞(CVE-2014-0160)这个漏洞使攻击者可以从server内存中读取64 KB的数 ...

  2. 绿盟科技发布OpenSSL高危漏洞技术分析与防护方案 G20成员国美国、中国、德国受影响较大...

    近日,OpenSSL官方发布了版本更新,修复了多个OpenSSL漏洞,这次更新所修复的漏洞中,有两个危害等级较高的为CVE-2016-6304和CVE-2016-6305.绿盟科技对此漏洞进行了技术分 ...

  3. 心血漏洞(OpenSSL升级)

    查看系统OpenSSL版本:openssl version,查看该版本是否存在心血漏洞,受影响版本为:1.0.1-1.0.1f / 1.0.2 Beta1 下载最新的OpenSSL安装包并上传到服务器 ...

  4. Openssl“心脏出血”漏洞分析及其利用

    一.openssl漏洞形成原因 4月7日,互联网安全协议OpenSSL被曝存在一个十分严重的安全漏洞.在黑客社区,它被命名为"心脏出血",表明网络上出现了"致命内伤&qu ...

  5. 公开仓库中Docker镜像的漏洞分析结果发布

    Federacy的一名研究人员发布了一项报告,该报告分析了公开仓库中Docker镜像的漏洞.24%的镜像发现了明显的漏洞,其中基于Ubuntu的镜像漏洞最多,而基于Debian的镜像漏洞最少. \\ ...

  6. request:fail 发生了 SSL 错误无法建立与该服务器的安全连接——openssl报漏洞该升级了

    一.场景: 接口发布服务器环境为CentOS Linux release 7.5.1804 (Core),OpenSSL 版本OpenSSL 1.0.2k-fips  26 Jan 2017,前端是u ...

  7. openssl HeartBleed漏洞复现

    简介: 心脏滴血漏洞于2014年被爆出,攻击者可以通过构造特殊的数据包,远程读取特定服务器内存中64K的数据,获取内存中的敏感信息.因openssl应用广泛,故影响较大. 原理: 1. 什么是SSL? ...

  8. 心血漏洞第二发?SSL v3再曝新漏洞发布预警

    2019独角兽企业重金招聘Python工程师标准>>> 关于前一阵的SSL"心血"漏洞我想大家一定不会太陌生,漏洞出来之后,各家都组织人马忙东忙西.该分析的分析, ...

  9. Drown跨协议攻击TLS漏洞分析

    北京时间 2016年3月2日,OpenSSL官方发布了新的安全公告.公告中提及修复了一个高危漏洞--DROWN跨协议攻击TLS漏洞.百度云安全威胁管理团队联合百度安全应急响应中心第一时间对事件触发应急 ...

最新文章

  1. android fm 耳机,Android杂谈:音频调试小计
  2. linux安装vsftp教程,CentOS7 vsftp 安装与配置(视频教程)
  3. 10个利用Eclipse调试Java的常见技巧
  4. 真正意义的Anchor-Free,FCOS目标检测算法了解一下
  5. OpenCV 基本绘制Basic Drawing
  6. JAVA程序设计计时器代码_Java中的定时器Timer使用示例代码详解
  7. day1作业:登录接口
  8. 今天聊聊Oracle Database 21c 十“小”新特性
  9. activiti高亮显示图片_电气自动化控制中,工业显示器应用如何“硬核”拓展细分领域?...
  10. 我是如何从零开始 Web 前端自学之路的?
  11. 常见的遍历数组和对象的方法
  12. git commit --amend两种用法
  13. 如何实现 迭代器 可迭代对象 (2.1)
  14. 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇
  15. 万无一失,网站的高可用架构
  16. pythonjam教程_colorama(pythonjam官网)
  17. lbp2900打印机linux驱动下载,佳能LBP2900+驱动下载-佳能LBP2900+打印机驱动下载 V3.30官方版--pc6下载站...
  18. 如何保持session一致性?
  19. 全网疯传!最新高频100题汇总(附答案详解)
  20. 从Word中读取内容将word转换成txt

热门文章

  1. 浅谈客户端,服务器端,终端
  2. 单片机应用系统设计技术——数控云台master
  3. Linux无法账号密码登录问题
  4. 3_Intellij_Idea在Debug模式下如何在控制台输入
  5. sql: substr函数用法
  6. 为什么使用双亲委派机制以及如何破坏双亲委派
  7. 1468:OKR-Periods of Words(kmp算法)
  8. [转贴]金庸的九家著名公司
  9. 关于HOOK,如何通过钩子截获指定窗口的所有消息 SetWindowsHookEx
  10. 如何使用a股量化交易api接口?