前阵子“心脏出血”刚发生的时候读了下源代码,给出了自己觉得比较清楚的理解。
-------------------------穿越时空的分割线---------------------------
参考:http://drops.wooyun.org/papers/1381
这个问题出现在openSSL处理TLS心跳的过程中,TLS心跳的流程是:A向B发送请求包,B收到包后读取这个包的内容(data),并返回一个包含有请求包内容的响应包。请求包的内容(data)中包含有包的类型(type)和数据长度等信息。
当B收到A的请求包后,并没有的验证A包的实际长度,而是简单的把请求包data中说明的长度当作data的实际长度,于是当请求包中说明的长度与请求包数据实际长度不同时,问题就产生了。假设A构造一个请求包,它的实际内容长度只有1,而却告诉B的它的长度是65535,那么B接受到这个包后就会把A的内容完全当作65535来处理,其实到这里,问题还并不严重,最严重的问题出在,心跳的响应包还需要附带请求包的全部内容,这就需要程序做一次将请求包的数据从它所在的内存拷贝到响应包的内存里的操作,这下就出大问题了,当拷贝的时候,程序认为A包的内容长度是65535个字节,结果A包在内存里面实际只有1个字节,于是程序不仅拷贝出了A包的内容,还“傻傻”地将A包数据在内存中位置后额外的65534个字节拷贝进了响应包里,并将这个响应包发还给了A,于是A便轻易地获得了B内存中这65534个字节的数据。想象一下,如果这65534个字节数据中包括一些敏感信息,那么后果将非常严重。而且A还可以简单地通过连续的发送心跳包,获取B机器内存中n个65534字节的数据,这个漏洞不愧是2014年“最佳漏洞”。
现实是残酷的,据说的确已经有很多用户的敏感信息通过这种方式泄漏了。作为一个应用如此广泛和重要的开源库,出现这种低级的问题实在是让人不能理解,不禁又让人联想起了------阴谋!

转载于:https://www.cnblogs.com/flyFreeZn/p/3860752.html

关于“心脏出血”漏洞(heartbleed)的理解相关推荐

  1. Heartbleed心脏出血漏洞原理分析

    1. 概述    OpenSSL在实现TLS和DTLS的心跳处理逻辑时,存在编码缺陷.OpenSSL的心跳处理逻辑没有检测心跳包中的长度字段是否和后续的数据字段相符合,攻击者可以利用这一点,构造异常的 ...

  2. Heartbleed心脏出血漏洞靶场搭建

    1. 简介    OpenSSL心脏出血漏洞原理是OpenSSL引入心跳(heartbeat)机制来维持TLS链接的长期存在,心跳机制作为TLS的扩展实现,但在代码中包括TLS(TCP)和DTLS(U ...

  3. 渗透测试-Openssl心脏出血漏洞复现

    心脏滴血 早在2014年,互联网安全协议OpenSSL被曝存在一个十分严重的安全漏洞.在黑客社区,它被命名为"心脏出血",表明网络上出现了"致命内伤".利用该漏 ...

  4. OpenSSL“心脏出血”漏洞爆发和修复方法

    2019独角兽企业重金招聘Python工程师标准>>> 4月8日消息,昨日有国外黑客爆出OpenSSL存在一处内存泄漏漏洞(即OpenSSL"心脏出血"漏洞),该 ...

  5. OpenSSL“心脏出血”漏洞

    OpenSSL"心脏出血"漏洞是一个非常严重的问题.这个漏洞使攻击者能够从内存中读取最多64 KB的数据. AD: 当我分析GnuTLS的漏洞的时候,我曾经说过,那不会是我们看到的 ...

  6. openssl(CVE-2014-0160)心脏出血漏洞复现

    目录 #漏洞简介 #漏洞原理 #漏洞检测 #漏洞利用 #漏洞简介 心脏出血是openssl库中的一个内存漏洞,攻击者利用这个漏洞可以服务到目标进程内存信息,如其他人的cookie等敏感信息. Hear ...

  7. 关于OpenSSL“心脏出血”漏洞的分析

    0x00 背景 原作者:Sean Cassidy 原作者Twitter:@ex509 原作者博客:http://blog.existentialize.com 来源:http://blog.exist ...

  8. 漏洞分析---关于OpenSSL“心脏出血”漏洞的分析

    关于OpenSSL"心脏出血"漏洞的分析 关于出处 原文作者:Sean Cassidy [Twitter:@ex509 ] 原作博客:http://blog.existential ...

  9. (CVE-2014-0160)OpenSSL 心脏出血漏洞

    (CVE-2014-0160)OpenSSL 心脏出血漏洞 一.漏洞简介 Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为 ...

最新文章

  1. showdialog 尝试读取或写入受保护的内存_TreadMarks: 基于工作站网络的共享内存计算...
  2. ffmpeg转码速度控制方法
  3. Java中怎样遍历两个Date日期之间的每一天
  4. iOS使用UIScrollView实现左右滑动UITableView和UICollectionView
  5. 欢迎来到我的第一个个人laravel尝试论坛项目,给予评价和建议 谢谢。
  6. Exynos4412 内核移植(二)—— 内核编译过程分析
  7. 使用 custom element 创建自定义元素
  8. 【网络流24题】 No.3 最小路径覆盖问题 (网络流|匈牙利算法 -最大二分匹配)...
  9. 几乎是苹果6倍!华为可穿戴设备出货量Q1同比猛增282%
  10. C++类的继承与多重继承的访问控制【protected,private继承方式】
  11. android --多线程下载
  12. 手机号码归属地查询练习
  13. 通讯录管理系统(简洁版 课程设计)
  14. 爬取豆瓣电影数据并进行分析可视化
  15. jQuery Validate表单中文正则验证+手机号正则验证
  16. SRS部署集群服务 Edge 模式[SRS V4.0]
  17. 全志A20 android4.4双屏异显 双屏同显终于可以了
  18. word- 图片显示不全/错位
  19. confluence 删除_Confluence 清理已经删除的页面(完全删除)
  20. android 控件美化,Android UI 美化

热门文章

  1. OJ系列之---字符串分割
  2. 判断文件是否损坏_判断Excel文件是否已打开
  3. 怎么向html插入广告,给blogger添加各种广告代码的方法
  4. 030_SpringBoot全局属性配置文件
  5. 018_switch语句
  6. Installation error: INSTALL_FAILED_CONTAINER_ERROR
  7. 如何根据分页的当前页数查询数据_数据量很大的情况下,如何分页查询优化方案?...
  8. vue展示信息卡片_vue实现登录和个人信息组件展示
  9. for循环里的if语句中break_Go语言极简教程 - 第五篇 控制语句
  10. Android多媒体开发