写点什么

五年了,Heartbleed 漏洞仍未修复

  • 2019-12-13
  • 本文字数:3036 字

    阅读完需:约 10 分钟

五年了,Heartbleed漏洞仍未修复


五年了,Heartbleed 安全漏洞补丁仍未全面普及。


Heartbleed 安全漏洞在 2012 年被正式引入 OpenSSL 加密库,但直到 2014 年才被发现并得到修复。但直到五年之后的今天,仍有众多系统未能有效安装修复补丁。


本文希望为 IT 团队提供必要的信息,帮助大家判断是否要使用 Heartbleed 漏洞的修复补丁。但这里要提醒一句:即使安装补丁,您的用户数据仍有可能受到其他攻击的影响。

Heartbleed 安全漏洞是怎么回事?

Heartbleed 是 OpenSSL 加密库中的一项代码缺陷,具体如下:


memcpy(bp, pl, payload);


2014 年,研究人员在流行密码库 OpenSSL 当中发现一项安全漏洞。顺带一提,OpenSSL 负责为开发人员提供用于实现安全套接字层(SSL)与传统层安全性(TLS)协议的工具与资源。


目前,各类网站、电子邮件、即时消息(IM)应用程序以及虚拟专用网络(VPN)都依赖 SSL 与 TLS 协议,用以保障互联网上通信内容的安全性与私密性。因此,只要使用 OpenSSL 组件,您的应用程序就会受到 Heartbleed 漏洞的影响。在漏洞曝光之时,已经有高达 17%的 SSL 服务器被划入影响范围。


在漏洞被发现之后,很快得到 CVE-2014-0160 这一官方漏洞编号。不过在民间,大家普遍将其称为 Heartbleed。实际上,这个朗朗上口的名号来自 Codenomicon 的一位工程师,同时也是此项漏洞的发现者之一。


Heartbleed 这个名称,表达的是该安全漏洞的源头——RFC 6520 Heartbleed 扩展的一项错误实现。该扩展当中封装有 OpenSSL 的 SSL 与 TLS 协议。

Heartbleed 安全漏洞的表现

Heartbleed 安全漏洞会削弱 SSL 与 TSL 两大常见互联网通信协议的安全性。受到 Heartbleed 影响的网站,允许潜在的攻击者读取用户的访问历史。换言之,精心谋划的网络罪犯可以借此找出用户的加密密钥。


一旦加密密钥外泄,恶意攻击者将能够获取入侵系统所必需的凭证(包括用户名与密码)。在系统内部,入侵者还能利用失窃凭证所对应的授权级别发动更多后续攻击、窃听通信内容、顶替用户并夺取数据。

Heartbleed 的工作原理

Heartbleed 漏洞会削弱 Heartbleed 扩展的安全水平,进而损害 SSL 与 TLS 服务器同客户端之间的通信安全。


在理想情况下,Heartbleed 扩展本应负责验证服务器请求,进而保护 SSL 与 TLS 协议。具体来讲,它允许通信端计算机发送 Heartbleed 请求消息。


每条消息中都包含有效载荷(一条包含已传输信息的文本字符串),外加一个代表有效载荷存储长度的数字(通常为 16 位整数)。在提供这些请求信息之前,Heartbleed 扩展首先需要进行边界检查,验证输入请求并返回所请求的有效载荷长度。


OpenSSL Heartbleed 扩展中的缺陷,导致验证流程中出现了一个漏洞。事实上,Heartbleed 扩展程序并没有进行边界检查,而是分配了一个没有经过验证的内存缓冲区。恶意攻击者可以借此发送请求,并接收最多 64 KB 的内存缓冲区内可用信息。


内存缓冲区是临时的内存存储位置,其存在的目标在于存储传输中的数据。缓冲区内可能包含多种不同数据类型,代表着不同的信息存储形式。在本质上,内存缓冲区会在信息被发送至指定位置之前,一直保留这部分信息内容。


内存缓冲区不会进行数据整理,而是对数据进行分批存储。因此,内存缓冲区内可能包含敏感与财务信息,外加凭证、Cookie、网站页面与图像、数字资产以及任何传输中的数据。当恶意攻击者利用 Heartbleed 漏洞时,他们会通过欺诈手段通过 Heartbleed 扩展获取内存缓冲区中的所有可用信息。

Heartbleed 的修复情况

谷歌公司的 Bodo Moeller 与 Adam Langley 为 Heartbleed 创建了修复程序。他们编写了代码,提醒 Heartbleed 扩展应忽略一切除有效载荷必要数据之外的 Heartbleed 请求信息。


下面来看 Heartbleed 修复代码示例:


if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */

Heartbleed 漏洞给 OpenSSL 带来的影响

Heartbleed 安全漏洞的曝光在世界范围内引起了恐慌。在安装这一修复补丁之后,关注者们开始积极寻求事件的缘由。在对 OpenSSL 项目进行一番严格审查之后,人们意识到这套广受欢迎的加密库仅由两人负责维护,且相关预算少得可怜。


这一发现,给我们带来了两项积极的举措,甚至在一定程度上改变了开源的格局:


  • 组织意识到支持开源项目的重要性。因为 OpenSSL 的两名成员只能用自己的积蓄支持这项事业。另一方面,使用开源成果的组织完全可以提供保障项目安全所需要的资源。

  • 为了资助重要的开源项目,Linux 启动了核心基础设施设计(CII)。CII 选定那些最关键的开源项目,特别是对互联网以及其他信息系统具有重要影响的项目。CII 收取大型组织的捐款,并以规划及赔款的形式将其交付至各开源软件项目手中。


与以往引发变革的无数危机一样,Heartbleed 漏洞当然也带来了负面影响:漏洞品牌开始兴起。Heartbleed 漏洞就是由谷歌与 Codenomicon 两个实体同时发现的。


谷歌方面选择不公开披露这项漏洞,而仅与 OpenSSL 贡献者进行信息共享。但在另一方面,Condemonicon 则选择将消息发布给公众。他们命名了这一漏洞,甚至创建了徽标与网站,并开始以营销活动的思路投入大规模宣传。


在接下来的几年中,很多公开曝光的漏洞都得到了如同知名产品般的对待——公关公司为其树立品牌,营销机构部署品牌名称、徽标甚至是专门的网站。虽然这些作法在一定程度上提高了公众对于零日漏洞的关注度,但同时也引发了巨大的潜在混乱。


如今,安全专家与软件开发人员正忙着处理数以千计的漏洞。为了给系统提供适当保护,他们需要首先确定漏洞的优先级。以此为基础,他们才能断言哪些漏洞需要立即修复,哪些可能稍后再行处理。有时候,那些被标榜为高危的“知名”安全漏洞,其实并没有那么重要。


毕竟在面对安全漏洞时,相关各方不一定总有充裕的时间、技能以及资源来判断其确切危险程度。因此,专业人士们应该集中精力为那些有利于公众的方式开发修复补丁,而非将安全漏洞变成一种营销噱头。

Heartbleed 的现状

如今,距离 Heartbleed 漏洞的最初披露已经过去了五年,但它仍然广泛存在于众多服务器及系统当中。当然,OpenSSL 的最新版本已经做好了修复,但尚未(或者无法)升级至修复版本的 OpenSSL 系统仍会受到这项漏洞的影响,且极易受到攻击。


对于恶意攻击者而言,只要能找到 Heartbleed 漏洞,接下来就一切好办:他们可以自动进行检索,然后轻松完成入侵。在找到这类易受攻击的系统之后,利用过程相当简单,由此获得的信息及/或凭证也能帮助他们快速推进其他后续攻击。

装补丁,还是不装补丁,这是个问题

Heartbleed 漏洞属于因人为错误而出现的 OpenSSL 安全缺陷。由于 OpenSSL 的广泛普及,不少应用程序都受到直接影响,致使恶意攻击者能够轻松获取大量数据。


在发现漏洞之后,谷歌员工找到了解决方案,并向 OpenSSL 贡献者提供了相关代码。在此之后,贡献者又进一步引导 OpenSSL 用户进行版本升级。听起来一切都很美好。


但截至目前,即使是完成了 OpenSSL 版本升级,由于代码库本身未经编辑,我们仍然能够从众多应用程序、系统以及设备当中找到 Heartbleed 漏洞。如果大家担心自己可能受到影响,可以点击此处测试您的系统。万一结果显示您的设备无法支持修复补丁,大家应当尽快采取其他措施以缓解或者消除风险。


服务器或者云平台的修复工作一般比较简单,但物联网设备就麻烦一些,可能需要单独为其安装补丁,甚至配合更高级的风险处理技术。在这方面,建议大家尽快与系统管理员联系,确定如何消除 Heartbleed 这个老漏洞可能带来的新问题。


原文链接


Five years later, Heartbleed vulnerability still unpatched


2019-12-13 18:233917

评论

发布
暂无评论
发现更多内容

MySQL索引15连问,你扛得住吗?

Java MySQL 数据库 索引

2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

肥晨

三周年连更

分布式事务的21种武器 - 1

俞凡

架构

工赋开发者社区 | MES/MOM数据采集系统需求分析和总体设计

工赋开发者社区

Spring 事务及传播机制原理详解

Java spring 事务

好用的pdf格式转换器:PDF to Word Document Converter 激活版

真大的脸盆

Mac PDF Mac 软件 PDF格式转换

限时开源!阿里京东架构师出品亿级高并发系统设计手册

会踢球的程序源

Java 架构 后端 java架构师

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

亚马逊云科技 (Amazon Web Services)

FastDFS收藏起来,现在开始用Minio吧

会踢球的程序源

Java fastdfs

WebGPU 令人兴奋的 Web 发展

devpoint

WebGL webgpu #WebGPU 三周年连更

测试需要写测试用例吗?

老张

软件测试 质量保障 测试用例

霸榜Github三个月的「架构师成长手册」!成为架构师竟然也有捷径

Java你猿哥

Java 分布式 架构设计 架构师 SSM框架

Java的访问修饰符

Java你猿哥

Java oop SSM框架

2023最NB的JVM基础到调优笔记,光图文就超清晰,吃透阿里P6小case

Java你猿哥

Java JVM Java虚拟机 jvm调优

让算力普惠、释放技术红利,阿里云让开发者成为创新主体

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

我给大家免费公开五份阿里Java架构师学习手册!助力金三银四

Java你猿哥

Java 架构 算法 高并发 Java性能调优

面试官:类是如何加载的?

多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌

Java你猿哥

Java 多线程 面试题 高并发 多线程与高并发

京东面试题:说说synchronized和volatile的区别

Java volatile JMM synchronized

硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K

Java java面试 Java八股文 Java面试题 Java面试八股文

带你浅谈下Quartz的简单使用

Java你猿哥

Java SSM框架 quartz

从初学者角度聊一聊socket到底是什么?

会踢球的程序源

Java 后端 socket

如果有一天当你的Redis 内存满了,该怎么办?

会踢球的程序源

Java redis 后端

终于拿到了爆火全网的进一线大厂程序员必看的1700道java面试题

Java java面试 Java八股文 Java面试题 Java面试八股文

SpringBoot中如何解决Redis的缓存穿透、缓存击穿、缓存雪崩?

劲爆!阿里巴巴面试参考指南(嵩山版)开源,程序员面试必刷

Java 程序员 面试

阿里巴巴灵魂一问:说说触发HashMap死循环根因

会踢球的程序源

hashmap Java1

ES6中的Proxy

格斗家不爱在外太空沉思

JavaScript ES6 三周年连更

CNStack 云服务&云组件:打造丰富的云原生技术中台生态

阿里巴巴云原生

阿里云 云原生 CNStack

Golang负载均衡器Balancer的源码解读

骑牛上青山

Go 负载均衡

五年了,Heartbleed漏洞仍未修复_软件工程_Gilad Maayan_InfoQ精选文章