zlib、OpenSSL漏洞及解决

1. 漏洞描述

  • CVE: CVE-2016-9843。 zlib 1.2.8版本中存在拒绝服务漏洞。攻击者可利用该漏洞造成受影响的应用程序崩溃,导致拒绝服务。
  • CVE: CVE-2020-1967。  OpenSSL 1.1.1d版本、1.1.1e版本和1.1.1f版本中的‘SSL_check_chain()’函数存在代码问题漏洞。远程攻击者可利用该漏洞导致服务器或客户端应用程序崩溃。

2. 解决

更新版本,升级openssl前必须先升级zlib。

2.1 zlib

  • 下载zlib-1.2.11,并解压
[root@vt12 ~]# wget http://www.zlib.net/zlib-1.2.11.tar.gz

[root@vt12 ~]# tar -zxvf zlib-1.2.11.tar.gz -C /usr/local/soft/
  • 卸载旧库
​
[root@vt12 ~]# rpm -e --nodeps zlib-1.2.7-18.el7.x86_64

​
  • 安装zlib-devel
[root@vt12 ~]# yum install zlib-devel
  • 编译
[root@vt12 zlib-1.2.11]# ./configure --prefix=/usr/local/zlib && make  && make install
...
chmod 644 /usr/local/zlib/include/zlib.h /usr/local/zlib/include/zconf.h
  • 系统配置
[root@vt12 ~]# echo "/usr/local/zlib/" > /etc/ld.so.conf.d/zlib.conf

[root@vt12 ~]# cp /usr/local/soft/zlib-1.2.11/zutil.h /usr/local/include/

[root@vt12 ~]# cp /usr/local/soft/zlib-1.2.11/zutil.c /usr/local/include/

[root@vt12 ~]# cp /usr/local/soft/zlib-1.2.11/zlib.h /usr/local/include/

[root@vt12 ~]# cp /usr/local/soft/zlib-1.2.11/zconf.h /usr/local/include/
  • 替换旧版本
# 查看旧版本位置
[root@vt12 ~]# find / -name zlib.pc
/usr/lib64/pkgconfig/zlib.pc           # 旧版本位置
/usr/local/soft/zlib-1.2.11/zlib.pc    # 新版本源码位置 
/usr/local/zlib/lib/pkgconfig/zlib.pc   # 新版本编译后位置
# 替换旧版的zlib.pc
[root@vt12 ~]# cp /usr/local/zlib/lib/pkgconfig/zlib.pc /usr/lib64/pkgconfig/
cp: overwrite ‘/usr/lib64/pkgconfig/zlib.pc’? y

# 删除旧版本的libz.so
[root@vt12 ~]# ls /usr/lib64/libz.so*
/usr/lib64/libz.so  /usr/lib64/libz.so.1  /usr/lib64/libz.so.1.2.7
[root@vt12 ~]# rm -rf  /usr/lib64/libz.so*

# 复制新版本的libz.so
[root@vt12 ~]# cp /usr/local/zlib/lib/libz.so.1.2.11 /usr/lib64/
[root@vt12 ~]# cd /usr/lib64/
[root@vt12 lib64]# ln -s libz.so.1.2.11  libz.so
[root@vt12 lib64]# ln -s libz.so.1.2.11  libz.so.1
  • 加载
[root@vt12 zlib-1.2.11]# ldconfig
  • 查看版本
[root@vt12 ~]# cat /usr/lib64/pkgconfig/zlib.pc
prefix=/usr/local/zlib
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${libdir}
includedir=${prefix}/include

Name: zlib
Description: zlib compression library
Version: 1.2.11

Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}

2.2 OpenSSL

  • 下载包,并解压
[root@vt12 ~]# wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz

[root@vt12 ~]# tar -zxvf openssl-1.1.1g.tar.gz -C /usr/local/soft/
  • 编译安装
[root@vt12 openssl-1.1.1g]# ./config shared zlib
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1g (0x1010107fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************
[root@vt12 openssl-1.1.1g]# make && make install
...
/usr/local/share/doc/openssl/html/man7/x509.html
  • 配置
[root@vt12 ~]# mv /usr/bin/openssl /usr/bin/openssl.bak

[root@vt12 ~]# mv /usr/include/openssl /usr/include/openssl.bak

[root@vt12 include]# find / -name openssl
find: ‘/proc/10546’: No such file or directory
/etc/pki/ca-trust/extracted/openssl
/usr/lib64/openssl
/usr/local/bin/openssl
/usr/local/include/openssl
/usr/local/share/doc/openssl
/usr/local/soft/openssl-1.1.1g/apps/openssl
/usr/local/soft/openssl-1.1.1g/include/openssl
/usr/local/soft/openssl-1.1.1g/test/ossl_shim/include/openssl

[root@vt12 ~]# ln -s /usr/local/bin/openssl /usr/bin/openssl

[root@vt12 ~]# ln -s /usr/local/include/openssl /usr/include/openssl 
[root@vt12 ~]# echo "/usr/local/lib64/" >> /etc/ld.so.conf

[root@vt12 ~]# ldconfig
  • 验证
[root@vt12 ~]# openssl version -a
OpenSSL 1.1.1g  21 Apr 2020
built on: Sun Dec 13 14:49:11 2020 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib64/engines-1.1"
Seeding source: os-specific

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VS是微软公司开发的一款集成开发环境,而libcurl、zlibopenssl都是开源软件库。 libcurl是一个用于支持网页传输协议的客户端软件库。它支持多种传输协议,包括HTTP、FTP、SMTP等,可以方便地实现网络数据的传输和通信。libcurl提供了简单易用的API接口,具有高度的可移植性和灵活性,广泛应用于各种网络应用中。 zlib是一个用于数据压缩和解压缩的库。它可以将数据进行压缩,使其占用更少的存储空间,同时可以提高数据的传输效率。zlib可以与其他软件库配合使用,例如libcurl,以实现网络数据的传输和压缩。 openssl是一个开源的加密解密库。它提供了各种安全协议和算法的实现,包括SSL/TLS协议、RSA、AES等,用于保护网络通信的安全性。openssl被广泛应用于网络安全领域,用于实现加密通信、数字证书的生成和管理等功能。 在使用方面,VS主要用于开发和编译程序,可以方便地创建和管理项目,提供了丰富的开发工具和调试功能。而libcurl、zlibopenssl是用于程序开发过程中的库文件,可以被程序调用以实现特定功能。在网络应用开发中,常常需要使用libcurl来进行网络传输,同时可以结合zlib进行数据的压缩和解压缩,而openssl可以提供数据的安全加密和解密功能。 总之,VS是一个开发环境,而libcurl、zlibopenssl是开发中常用的软件库,它们在不同领域发挥着重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值