相关热词搜索:
OpenSSL Heartbleed 漏洞分析与研究3600字
OpenSSL Heartbleed 漏洞分析与研究3600字 1 引言 2014年4月8日,XP宣布正式停止服务的日子,也是OpenSSL爆出大漏洞的日 子,这个漏洞被称为Heartbleed或“心脏出血”漏洞。OpenSSL漏洞是本年度爆 出最严重的安全漏洞,其涉及范围也非常广泛,利用该漏洞,黑客坐在自己家里 电脑前就可以实时获取到很多以https开头网址的用户登录账号密码,包括大批 网银、知名购物网站、电子邮件等。因此非常有必要对OpenSSL爆出的安全漏洞 进行分析与研究,并提出相应防范对策。2 SSL 及 OpenSSL SSL安全套接层协议(Secure Socket Layer),用以保障在Internet上数据 传输之安全,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取 及窃听。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全 支持。SSL协议可分为两层:
SSL记录协议(SSL Record Protocol):它建立在 可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本 功能的支持。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协 议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、 交换加密密钥等。
OpenSSL是一套开放源代码的软件库包,实现了SSL与TLS( Transport Layer Security)协议。其主要库是以C语言所写成,实作了基本的加密功能。OpenSSL 可以运行在绝大多数类Unix操作系统上,OpenVMS与 Microsoft Windows。
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程 序以及密码算法库。OpenSSL 支持一些不同的密码算法,包括对称密码算法,如 AES,DES,IEDA,RC2 等;
非对称密码算法,如 RSA,DSA 等;
信息摘要算法, 如 MD5,MD4,SHA-1,MDC-2 等。
3 Heartbleed 漏洞分析 3.1 Heartbleed攻击原理2014年4月7日OpenSSL发布了安全公告,在OpenSSL1.0.1版本中存在严重漏 洞(CVE-2014-0160)。OpenSSL Heartbleed模块存在一个BUG,问题存在于 ssl/dl_both.c文件中的心跳部分,当攻击者构造一个特殊的数据包,满足用户 心跳包中无法提供足够多的数据会导致memcpy函数把SSLv3记录之后的数据直接 输出,该漏洞导致攻击者可以远程读取存在漏洞版本的OpenSSL服务器内存中多 达64K的数据,这段内存数据可能包含证书私钥、用户名与密码、聊天信息、电 子邮件、重要的商业文档、通信等数据。
TLS Heartbeat 项目源代码提交工作是在 2011 年 12月 31 日星期六午夜 期间耗时 61 分钟完成的,因此该漏洞已经存在两年之久,三分之二的活跃网站 均在使用这种存在缺陷的加密协议。目前,中国国家信息安全漏洞共享平台 (CNVD) 对该漏洞的评级为“高危”。
3.2 Heartbleed 漏洞分析 TLS 位于传输层和应用层之间,提供数据安全加密。TLS 心跳指的是用户向 服务器发送数据包,服务器返回一个相同的数据包以确定彼此在线,以支持持续 通信功能。用户向服务器发送的心跳数据中用两个字节表明有效负载数据长度, 而服务器端 OpenSSL 将根据这个有效负载长度构造一个新的数据包送给对端。
这一漏洞藏身于OpenSSL的TLS Heartbeat扩展当中:这是一项持续作用型功 能,其中一个连接端会向另一端发送任意数据的有效负载,对方则发回对应数据 的精确副本以确保传输过程一切正常。根据官方提供的标准说明,Heartbeat信 息在C语言中表现为以下形式:
struct {HeartbeatMessageType type;
uint16 payload_length;
opaque payload[HeartbeatMessage.payload _length];
opaque padding[padding_length];
} HeartbeatMessage;
这条HeartbeatMessage通过SSL3_RECORD结构——一种SSL/TLS通信基础构建块——进行传输。SSL3_RECORD中的关键性字段如下所示,其中length代表接 收到的HeartbeatMessage内容为多少字节、data则为指向该HeartbeatMessage 的指针。
typedef struct ssl3_record_st {int type;
unsigned int length;
unsigned int off;
unsigned char * data;
unsigned char * input;
unsigned char * comp;
unsigned long epoch;
unsigned char seq_num[8];
} SSL3_RECORD 更明确地进行解释,SSL3记录中的data指向接收到的HeartbeatMessage的起 始位置,而length代表接收到的HeartbeatMessage的字节数量。与此同时, HeartbeatMessage中的payload length代表被发回的随意有效负载的字节数量。
发出HeartbeatMessage的一方对payload length拥有控制权,不过正如我们 所看到,SSL3_RECORD中的length字段并没有经过验证,而这一状况就成了攻击 者实现内存溢出绝佳机会。
4 Heartbleed 漏洞检测与防范 4.1 Heartbleed 漏洞检测方法 目前一些网站已经推出了测试,检测给定的网站上是否存在心脏出血漏洞, 这里做简要整理。
(1) 可以直接利用在线工具检测 https 站点是否存在此漏洞,这种方法 快捷、准确,如360提供的在线检测网址为http://wangzhan.360.cn/heartbleed。。
(2) 通过相应命令查看提供加密服务的 OpenSSL 版本是否在受影响的版 本范围,主要影响版本 OpenSSL 1.0.1到 OpenSSL 1.0.1f 以及 OpenSSL 1.0.2Beta1。
4.2 Heartbleed 漏洞防范方法 鉴于本漏洞的严重程度,如果确定本漏洞存在,暂停服务进行修补是一种较 好的应对策略。具体修补方式为:OpenSSL版本升级到最新的1.0.1g,重新生成 你的私钥,并请求和替换SSL的证书。
5 结束语 Heartbleed漏洞严重性远比想象的严重,而这次漏洞危机的其突发性和危害 性也给国内信息安全领域的企业和专家上了重要的一课,同样也希望这次危机能 加速推动我国信息安全领域相关科研水平提升和相关安全产品研发。
[1] 潘强, 郭毅, 刘志军. 基于SSL技术实现网络通信双向加密[J]. 信息 安全与技术 2012.08. [2] 美国国家标准与技术所. 国家漏洞数据库[EB/OL]. http:
//web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160. [3] 中国国家信息安全漏洞共享平台 [EB/OL]. http:
//www.cnvd.org.cn/flaw/show/CNVD-2014-02175. [4] SEGGELMANN R,TUEXEN M. Transport Layer Security( TLS) and Datagram Transport Layer Security ( DTLS)Heartbeat Extension[EB / OL]. IETF RFC 6520. ( 2012-02-08) [2014-05-09]https:
/ / tools. ietf. org / html / rfc6520. [5] Codenomicon公司. 关于“心脏出血”漏洞的说明[EB/OL].http:
//heartbleed.com/. 基金项目:
甘肃政院校级科研项目(GZF2012XQNLW14)。
张生财(1982- ) 男,硕士,讲师;
主要研究方向和关注领域:网络安全、 协议分析。