CVE-2014-0160漏洞背景
2014年4月7日OpenSSL发布了安全公告,在OpenSSL1.0.1版本中存在严重漏洞(CVE-2014-0160)。OpenSSL Heartbleed模块存在一个BUG,问题存在于ssl/dl_both.c文件中的心跳部分,当攻击者构
造一个特殊的数据包,满足用户心跳包中无法提供足够多的数据会导致memcpy函数把SSLv3记录之后的数据直接输出,该漏洞导致攻击者可以远程读取存在漏洞版本的OpenSSL服务器内存中多达64K
的数据。
在目前已有的资料中,国内外同行已经称本漏洞为 “击穿心脏”、“毁灭级”、“今年最严重”的漏洞。由于SSL协议是网络加密登陆认证、网络交易等的主流安全协议,而OpenSSL又是主流的SSL
搭建平台。因此这些称呼好不为过,建议各网络服务提供者、管理机构和用户高度注意本漏洞的处理情况,希望广大用户做出相应的对策。
OpenSSL受影响版本的分布
根据已经公开的信息,该漏洞影响分布情况如下。
1、OpenSSL 1.0.1f (受影响)
2、OpenSSL 1.0.2-beta (受影响)
3、OpenSSL 1.0.1g (不受影响)
4、OpenSSL 1.0.0 branch (不受影响)
5、OpenSSL 0.9.8 branch (不受影响)
处置建议如下
3.1 针对网络管理员,可以做的事情包括
鉴于本漏洞的严重程度,如果确定本漏洞存在,对一般性的网络服务者,暂停服务进行处置是一种较好的应对策略。
如果确定本漏洞存在,又必须保证服务不能停止,可以在漏洞修补过程中,暂时停止https服务,改用http服务,但这会带来相关认证信息明文传输的风险,具体利害需要做出谨慎的判断权衡。
具体修补方式为:
OpenSSL版本升级到最新的1.0.1g
重新生成你的私钥
请求和替换SSL的证书
也可以使用-DOPENSSL_NO_HEARTBEATS参数重新编译低版本的OpenSSL以禁用Heartbleed模块,最新版本升级地址为:https://www.openssl.org/source/. (OpenSSL官方)
3.2 针对普通网络用户,我们郑重提出的建议包括
鉴于本漏洞的严重程度,在不能确定你所网站和服务修补了本漏洞的情况下,在未来2~3天内(2014年4月9日日起)不登陆,不操作是一种较好的应对策略(这些操作包括网购、网银支付等)。
如果你必须进行操作,可以关注这些网站和服务的修改情况。
一些手机客户端的登陆,是对SSL的封装,因此手机登录也不安全。
其他安全企业团队会公布目前仍有问题的站点、或没有问题的站点情况,请予以关注。
下面是centos系统或redhat系统的修复方法:
总之我都是把版本升级到官网最新的版本:openssl-1.0.1g(2014.4.7更新的)
先进行支撑包的安装:
yum install -y zlib
openssl升级步骤:
0. 首先通过 #openssl version –a 查看系统中存在的OpenSSL版本号
下载最新版本的openssl源码包
# wget ftp://ftp.openssl.org/source/openssl-1.0.1g.tar.gz
2. 安装openssl
1. tar xzvf openssl-1.0.1g.tar.gz
2. cd openssl-1.0.1g
3. ./config shared zlib
4. make
5. make install
6. mv /usr/bin/openssl /usr/bin/openssl.OFF
7. mv /usr/include/openssl /usr/include/openssl.OFF
8. ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
9. ln -s /usr/local/ssl/include/openssl /usr/include/openssl
配置库文件搜索路径
10. echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
11. ldconfig -v
3 查看openssl版本号,验证安装正确性
1、#openssl version -a
penSSL
1.0.1g 7 Apr 2014
built on: Fri Apr 11 13:49:37 CST 2014
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/local/ssl"
下面是我自己写的一个小脚本:
#cat openssl-update.sh
yum install -y zlib
echo "*****************************************************************************************************************************"
openssl version -a
cd /root
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar xzvf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
ldconfig -v
echo "*****************************************************************************************************************************"
openssl version -a
#chmod +x openssl-update.sh
#./openssl-update.sh >>openssl-update.log
这是我自己的愚见,有问题可以探讨