写点什么

五年了,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:233727

评论

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

Vol.8 云栖小镇游记

pyfn2030

阿里云 随笔 数字化转型

服务化构建-多维度的认识中台

图南日晟

软件工程 分层架构 架构设计

深入浅出Mysql索引的那些事儿

猿人谷

MySQL 性能优化 索引

Vol.9 Web前端发展历程及前端工程化

pyfn2030

大前端

解决版权难题,“豪横”字体自己做

zhoo299

设计 CG

小谈校招offer选择

dongh11

职场 职业规划 应届毕业 心态 招聘

Java 学习笔记(三)数据类型

杜朋

控制 Pod 内容器的启动顺序

张晓辉

Kubernetes

游戏夜读 | vim,vim,vim

game1night

安装R语言编译器:

唯爱

只用CSS实现响应式Full-Width img 2种方法

寇云

CSS css3

Dataway 整合 Swagger2,让 API 管理更顺畅

哈库纳

Spring Boot DataQL Dataway Hasor

超简单入门MyBatis,看了就会了~

程序员的时光

mybatis

金灿灿的季节 - Apache DolphinScheduler收获5位新Committer

代立冬

Eureka 实例注册状态保持 STARTING 的问题排查

张晓辉

spring Spring Cloud netflix

服务化架构-状态码设计要点

图南日晟

微服务 RESTful 架构设计

【写作群星榜】5.22~5.28写作平台优秀作者&文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

磁盘挂载

唯爱

Vol.7 聊聊我热爱的陕西省图书馆

pyfn2030

记录 生活,随想

ARTS|Week 1 第一次使用LeetCode

Puran

LeetCode ARTS活动

认识数据产品经理(四 与互联网产品经理的区别)

马踏飞机747

大数据 互联网 产品经理 职业规划

MySQL死锁系列-常见加锁场景分析

程序员历小冰

MySQL

tput命令介绍

唯爱

XSKY发布XMotion纳管热迁移技术,OpenStack集群迁移效率提升超10倍

XSKY星辰天合

时序数据库

pydata

珍藏已久的 OS 学习网站拿出来分享给大家

苹果看辽宁体育

操作系统

不懂送女朋友什么牌子的口红?没关系!Python 数据分析告诉你。

JackTian

Python 程序员 数据分析 python 爬虫 口红

避免争执

孙苏勇

职场 随笔杂谈

《中国互联网简史》系列笔记之P2P

dongh11

读书笔记

在培训机构花了好几万学Java,当了程序员还常被鄙视,这是招谁惹谁了?

四猿外

Java 学习 程序员 个人成长

Rust 遇上 C/C++(二):函数传参

Coding Fatty

c c++ rust 编程语言

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