CVE-2021- 3156漏洞:sudo权限提升漏洞修复处理,升级到1.9.5p2

背景

当sudo通过-s或-i命令⾏选项在shell模式下运⾏命令时,它将在命令参数中使⽤反斜杠转义特殊字
符。但使⽤-s或 -i标志运⾏sudoedit时,实际上并未进⾏转义,从⽽可能导致缓冲区溢出。只要存在
sudoers⽂件(通常是 /etc/sudoers),攻击者就可以使⽤本地普通⽤户利⽤sudo获得系统root权限。

漏洞等级:高危
影响范围:Sudo 1.8.2 - 1.8.31p2、Sudo 1.9.0 - 1.9.5p

处理

⽬前官⽅已在sudo新版本1.9.5p2中修复了该漏洞,下面进行升级操作。

1、 升级前准备
wget https://www.sudo.ws/dist/sudo-1.9.5p2.tar.gz或直接yum upgrade sudo也可。
在这里插入图片描述
sha:539e2ef43c8a55026697fb0474ab6a925a11206b5aa58710cb42a0e1c81f0978

检查当前版本;sudo -V|head -5
在这里插入图片描述
备份库文件:
1)find / -name sudo*.so*
/usr/libexec/sudo/sudoers.so
/usr/libexec/sudo/sudo_noexec.so
在这里插入图片描述
2)find / -name libsudo_util.so.0
在这里插入图片描述
/usr/libexec/sudo/libsudo_util.so.0
3)备份:cp -pr /usr/libexec/sudo /home/ygcg/libbak/

在这里插入图片描述
4)环境动态链接库配置:
ls etc/ld.so.conf.d/
在这里插入图片描述

2、解压后,编译:
在这里插入图片描述

./configure --prefix=/usr --libexecdir=/usr/lib --with-secure-path --with-all-insults --with-env-editor --docdir=/usr/share/doc/sudo-1.8.6p7  --with-passprmpt="[sudo] password for %p: " 

注:–prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share;指定后,安装后的所有资源文件都会被放在指定的目录下,这样也方便卸载软件或移植软件,当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载干净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)。

#make
在这里插入图片描述

3、编译:
sudo make install
在这里插入图片描述

sudo ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0 ##执行操作前备份/usr/lib/sudo/libsudo_util.so.0文件
在这里插入图片描述
建议,可选择跳过该步骤:安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。执行:
#make clean
#make distclean
4、验证:
sudo -V
在这里插入图片描述
5、yum upgrade sudo
在这里插入图片描述
在这里插入图片描述
升级:Sudo version 1.8.19p2----->Sudo version 1.8.23,经验证这种方式只升级了小版本,未升级到Sudo version 1.9.5p2;未能满足安全修复需求。

临时缓解措施

1、安装所需的systemtap软件包和依赖项:

    systemtap yum-utils kernel-devel-"$(uname -r)"   ##RHEL 7:使用命令安装 kernel debuginfo:

    debuginfo-install -y kernel-"$(uname -r)"

    RHEL 8:使用命令安装 sudo debuginfo: debuginfo-install sudo

2、创建以下systemtap脚本(将文件命名为sudoedit-block.stap):

       probe process("/usr/bin/sudo").function("main") {
    
     

             command = cmdline_args(0,0,""); 

             if (strpos(command, "edit") >= 0) {
    
     

                    raise(9); 

             } 

        }

3、执行以下命令安装脚本:(使用root权限)

    nohup stap -g sudoedit-block.stap &

    注:该脚本将使得易受攻击的sudoedit二进制文件停止工作。sudo命令仍将照常执行。

卸载/回退

1、解压目录下检查Makefile文件是否有uninstall命令在这里插入图片描述
2、执行:make uninstall
在这里插入图片描述
3、验证:执行sudo,提示找不到libsudo_util.so.0文件
在这里插入图片描述

4、打开:/etc/ld.so.conf文件,里面只有一行文件
在这里插入图片描述
写入:/usr/local/lib;运行ldconfig,以更新/etc/ld.so.cache文件;cd /etc/ld.so.conf.d/

注:回退过程有问题,sudouninstall会失败,执行后会报找不到libsudo_util.so.0;

5、如只是应付领导,回退到以前版本,rpm 卸载掉以前的版本,在yum重新安装;

猜你喜欢

转载自blog.csdn.net/ximenjianxue/article/details/113659712