GnuPG漏洞(CVE-2018-12020) 修复

2021-12-01 19:42:44 浏览数 (1)

GnuPG代码问题漏洞(CVE-2018-12020) 修复

GnuPG 在2.2.7版本之前已存在高危漏洞。 原因是源代码文件mainproc.c中代码存在漏洞,这将会导致在文件名清理不当的情况下,允许显示虚假状态消息并绕过签名验证

如GnuPG 2.2.7版本以及之前的版本是通过编译安装部署,建议升级到2.2.8版本,以修复此漏洞

漏洞描述:http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201806-580

下面是修复步骤参考

0、备份

如为云服务器,在升级前请备份服务器镜像,避免升级失败或兼容问题导致业务受到影响

1、安装前的准备

1.1 libgpg-error依赖安装

代码语言:txt复制
wget https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.40.tar.bz2 --no-check-certificate
tar -jxvf libgpg-error-1.40.tar.bz2 
cd libgpg-error-1.40/
./configure
make && make install
echo $?
gpg-error --version

1.2 libgcrypt依赖安装

代码语言:txt复制
wget https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.0.tar.bz2 --no-check-certificate
tar -jxvf libgcrypt-1.7.0.tar.bz2 
cd libgcrypt-1.7.0/
./configure
make && make install
echo $?
libgcrypt-config --version

1.3 libassuan依赖安装

代码语言:txt复制
wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2 --no-check-certificate
tar -jxvf  libassuan-2.5.1.tar.bz2
cd libassuan-2.5.1/
./configure
make && make install
echo $?
libassuan-config --version

1.4 npth依赖安装

代码语言:txt复制
wget https://gnupg.org/ftp/gcrypt/npth/npth-1.2.tar.bz2 --no-check-certificate
tar -jxvf  npth-1.2.tar.bz2 
cd npth-1.2/
./configure
make && make install
echo $?
npth-config --version

1.5 libksba 依赖安装

代码语言:txt复制
wget https://gnupg.org/ftp/gcrypt/libksba/libksba-1.3.4.tar.bz2 --no-check-certificate
tar -jxvf  libksba-1.3.4.tar.bz2 
cd libksba-1.3.4/
./configure
make && make install
ksba-config --version

2、开始升级gnupg版本

代码语言:txt复制
wget https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.8.tar.bz2 --no-check-certificate
tar -xvjf gnupg-2.2.8.tar.bz2
cd gnupg-2.2.8
./configure
make && make install
echo $?
gpg --version

3、其它问题补充

3.1 库依赖问题

如执行gpg --version

报错

代码语言:txt复制
gpg: error while loading shared libraries: libgcrypt.so.20: cannot open shared object file: No such file or directory

解决方法

执行

代码语言:txt复制
whereis libgcrypt.so.20

查看,库文件的地址,比如返回的路径为:/usr/local/lib/libgcrypt.so.20

则将库写入环境变量即可,如下代码:

代码语言:txt复制
echo "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH"  >> /etc/profile.d/gpg.sh
source /etc/profile.d/gpg.sh

3.2 编译问题

编译安装 gnupg-2.2.8请安装较高版本的libgpg-error依赖,不要使用1.2.4版本,否则编译会出错

0 人点赞