当前主机存在Sudo CVE-2021-3156漏洞:Sudo1.8.23升级1.9.5p2
Sudo权限绕过漏洞(CVE-2019-14287)
Sudo缓冲区溢出漏洞(CVE-2021-3156)
根据安全漏洞CVE-2021-3156, 受影响的 Sudo 版本:
Sudo 版本 1.7.7 到 1.7.10p9、1.8.2 到 1.8.31p2 和 1.9.0 到 1.9.5p1 受到影响。
sudo官网:https://www.sudo.ws/
sudo下载地址:https://www.sudo.ws/getting/download/
一、在线更新
1 | sudo yum update -y sudo |
更新失败可以采用离线更新方案。
离线更新前先杀掉yum进程pkill-9 yum
二、离线更新
1、查看本机sudo版本
1 2 3 4 | # sudo --version Sudo 版本 1.8.23 ... Sudoers I/O plugin version 1.8.23 |
2、备份sudo相关文件
1 2 3 4 | 1# mkdir /etc/bak_sudo 2# find /etc/ -maxdepth 1 -name "sudo*" -exec cp -r {} /etc/bak_sudo/ \; 3# cp /usr/bin/sudo /usr/bin/sudo_bak_1823 4# cp -r /usr/libexec/sudo /usr/libexec/sudo_bak_1823 |
3、安装编译新的sudo
1 2 3 4 | 1# tar -xf sudo-1.9.5p2.tar.gz 2# cd sudo-1.9.5p2/ 3# ./configure --prefix=/opt/sudo --libexecdir=/usr/libexec --with-secure-path --with-all-insults --with-env-editor --docdir=/usr/share/doc/sudo-1.9.5p2 --with-passprompt= "[sudo] password for %p: " 4# make && make install |
4、替换旧的版本的库文件和二进制命令
1 2 | 1# ln -sfv libsudo_util.so.0.0.0 /usr/libexec/sudo/libsudo_util.so.0 2# ln -sfv /opt/sudo/bin/sudo /usr/bin/ |
5、验证sudo版本
1 2 3 4 | # sudo --version Sudo 版本 1.9.5p2 Sudoers I/O plugin version 1.9.5p2 Sudoers audit plugin version 1.9.5p2 |
注:如果升级后sudo不可用,可先回退之前版本
1 2 3 4 | 1# mv /usr/bin/sudo /usr/bin/sudo_bak_195 2# mv /usr/libexec/sudo /usr/libexec/sudo_bak_195 3# mv /usr/bin/sudo_bak_182 /usr/bin/sudo 4# mv /usr/libexec/sudo_bak_182 /usr/libexec/sudo |
环境缺少gcc依次安装如下软件包即可
百度网盘:https://pan.baidu.com/s/1YaFuP_C7k1TUxGHYlkubIw
提取码:f5q4
1 2 3 4 5 6 7 8 9 10 | 正常安装如下rpm包解决GCC #--force 即使覆盖属于其它包文件也强制安装。 #--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强制安装。 rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpm rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm rpm -ivh kernel-headers-3.10.0-862.el7.x86_64.rpm rpm -ivh glibc-headers-2.17-222.el7.x86_64.rpm --nodeps --force rpm -ivh glibc-devel-2.17-222.el7.x86_64.rpm --nodeps --force rpm -ivh cpp-4.8.5-28.el7.x86_64.rpm --nodeps --force rpm -ivh gcc-4.8.5-28.el7.x86_64.rpm --nodeps --force |
参考:https://www.jianshu.com/p/9b5767e138b4
https://blog.csdn.net/mr_wanter/article/details/126889574
#单机升级脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/bash #检查是否有gcc编译 check=$(yum list installed |grep -E "gcc\.x86_64|gcc\-c\+\+\.x86_64|libgcc\.x86_64" |wc -l) [[ ${check} -lt 3 ]] && echo "环境缺少gcc,请安装 gcc.x86_64 gcc-c++.x86_64 gcc-c++.x86_64 后再次执行此脚本。" && exit #备份sudo相关文件 [[ -d /etc/bak_sudo ]] || mkdir /etc/bak_sudo find /etc/ -maxdepth 1 -name "sudo*" -exec cp -r {} /etc/bak_sudo/ \; #备份两个文件,后面升级失败的话,可以回退这个两个文件即可 cp /usr/bin/sudo /usr/bin/sudo_bak_182 cp -r /usr/libexec/sudo /usr/libexec/sudo_bak_182 #编译安装新的sudo tar -xf sudo-1.9.5p2.tar.gz cd sudo-1.9.5p2/ ./configure --prefix=/opt/sudo --libexecdir=/usr/libexec --with-secure-path --with-all-insults --with-env-editor <br>--docdir=/usr/share/doc/sudo-1.9.5p2 --with-passprompt= "[sudo] password for %p: " make && make install #替换旧的版本的库文件和二进制命令 ln -sfv libsudo_util.so.0.0.0 /usr/libexec/sudo/libsudo_util.so.0 ln -sfv /opt/sudo/bin/sudo /usr/bin/ |
回滚脚本(如果升级后sudo不可用,可先回滚)
1 2 3 4 5 | #!/bin/bash mv /usr/bin/sudo /usr/bin/sudo_bak_195 mv /usr/libexec/sudo /usr/libexec/sudo_bak_195 mv /usr/bin/sudo_bak_182 /usr/bin/sudo mv /usr/libexec/sudo_bak_182 /usr/libexec/sudo |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术