OpenSSL升级及其漏洞说明
简介
OpenSSL全称为Secure Socket Layer。是Netscape所研发。利用数据加密(Encryption)作技术保障在Internet上传输数据的安全。可确保数据在网络上的传输不会被窃听及截取。当然,OpenSSL是一个强大的password库,我们在使用SSL协议的时候不一定非得採用OpenSSL,只是眼下基本上都是用的OpenSSL,由于它更安全。使用起来也更简单。
官网:www.openssl.org
https://github.com/openssl/openssl
漏洞说明
低版本的OpenSSL存在多个安全漏洞,其中最为著名的漏洞是Heartbleed漏洞(CVE-2014-0160),这是一个严重的漏洞,可以允许攻击者从OpenSSL受影响的服务器上读取机密信息,例如加密密钥、会话令牌和其他敏感数据,而不需要进行身份验证。Heartbleed漏洞影响了OpenSSL 1.0.1版本至1.0.1f版本和1.0.2版本至1.0.2beta版本,这些版本在2012年3月14日至2014年4月7日期间发布。
除了Heartbleed漏洞外,低版本的OpenSSL还存在其他多个漏洞,例如POODLE漏洞(CVE-2014-3566)、BEAST漏洞(CVE-2011-3389)、FREAK漏洞(CVE-2015-0204)等等。这些漏洞都可能导致信息泄露或其他安全问题,因此使用最新版本的OpenSSL非常重要,以确保系统的安全性和稳定性。
OpenSSL 1.0.2k-fips是一种加强安全性的版本,其中的“fips”表示它符合美国联邦信息处理标准(FIPS)的安全要求。在该版本中,许多安全漏洞已被修复,包括Heartbleed漏洞、POODLE漏洞、BEAST漏洞等。但是,与任何软件一样,它可能会存在未知的漏洞或新的安全威胁。OpenSSL 1.0.2k-fips版本修复了Heartbleed漏洞。Heartbleed漏洞最初于2014年4月被公开披露,OpenSSL 1.0.2k-fips版本于2017年1月发布,其中包括对Heartbleed漏洞的修复。
因此,建议及时更新到最新版本的OpenSSL,以获取最新的安全修复和功能更新,并遵循最佳的安全实践,例如使用安全协议(例如TLS 1.2或更高版本)、启用必要的加密算法、禁用不安全的加密算法等,以最大程度地保护系统的安全性。同时,还应定期审查并更新系统中的所有软件包和依赖项,以确保系统的安全性。
在互联网安全协议OpenSSL v1.0.1到1.0.1f的password算法库中发现了一个很严重bug(CVE-2014-0160),该bug同意攻击者读取存在bug的系统的64k处理内存,暴露加密流量的密钥,用户的名字和password,以及訪问的内容。这个漏洞被称之为heartbleed,心脏流血。
据solidot 在April 7报道,OpenSSL已经公布了1.0.1g修复bug,Debian发行版也在半小时修复bug。Fedora公布了一个权宜的修正方案。该bug在2011年引入OpenSSL中。使用OpenSSL 0.9.8的发现版本号不受影响。但Debian Wheezy、Ubuntu 12.04.4、CentOS 6.5、Fedora 18、SUSE 12.2、OpenBSD 5.4、FreeBSD 8.4和NetBSD 5.0.2之后的版本号都收到影响。假设你的同意的系统有如上集中,建议将补丁修复到1.0.1g或以上版本号。
OpenSSL 1.0.2k-fips存在多个漏洞,以下是其中的一些:
- CVE-2016-2107: padding oracle in AES-NI CBC MAC check
- CVE-2016-6304: certificate message OOB reads
- CVE-2017-3731: RSA key generation cache timing vulnerability
- CVE-2017-3735: DDoS mitigation for ECSDA P-256
- CVE-2017-3736: EBCDIC overread
- CVE-2017-3737: BN_mod_exp may produce incorrect results on x86_64
- CVE-2017-3738: Malformed SHA512 ticket DoS
- CVE-2017-3739: BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
- CVE-2017-3740: BN_mod_inverse with odd modulus produces incorrect results
- CVE-2017-3732: Potential timing side channel in DSA signature generation
请注意,这只是其中的一部分漏洞列表,不一定是全部的漏洞列表。如果您需要更详细的信息,请参考OpenSSL的安全公告。
下载
https://www.openssl.org/source/old/1.1.1/
yum安装
1 | yum install -y openssl openssl-libs openssl-devel openssl-static |
版本查询
查看现有的版本
1 | openssl version |
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@test /]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@test /]# [root@test /]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 [root@test /]# openssl version -a OpenSSL 1.0.2k-fips 26 Jan 2017 built on: reproducible build, date unspecified platform: linux-x86_64 options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM OPENSSLDIR: "/etc/pki/tls" engines: dynamic [root@test openssl-1.1.1q]# |
编译升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz tar -zxvf openssl-1.1.1q.tar.gz cd openssl-1.1.1q ./config --prefix=/usr/local/openssl make -j8 make install ln -sf /usr/local/bin/openssl /usr/bin/openssl ln -sf /usr/local/include/openssl /usr/include/openssl ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 echo "/usr/local/lib/" >> /etc/ld.so.conf ldconfig -v openssl version openssl version -a |
可能存在的异常
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
这是由于openssl库的位置不正确造成的。
解决方法:
在root用户下执行:
1 2 | ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 |
回滚回默认版本
若升级openssl版本后, 导致某些服务编译安装失败的话, 如果短时间解决不来, 最好回滚到之前的默认版本, 操作方法如下:
查看openssl, 然后删除升级后的openssl
1 2 3 4 5 6 7 8 9 10 11 | find / -name openssl rm -rf /usr/local/src/openssl-1.1.1 rm -rf /usr/local/bin/openssl rm -rf /usr/local/share/doc/openssl rm -rf /usr/local/include/openssl yum install -y openssl openssl-libs openssl-devel openssl-static yum reinstall -y openssl openssl-libs openssl-devel openssl-static ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 |
然后查看下openssl版本
1 2 3 | [root@localhost ~]# which openssl /usr/bin/openssl [root@localhost ~]# openssl version -a |