sudo高危漏洞CVE-2021-3156修复
问题描述
2021年1月27日,RedHat爆出 sudo 工具存在缓冲区/栈溢出漏洞的风险通告,漏洞编号CVE-2021-3156,漏洞等级为高危。
任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而无需进行身份验证,攻击者不需要知道用户的密码。成功利用此漏洞可以获得root权限。
用户可以使用如下方法进行自查:
-
sudo -V查看版本,如果版本在:
Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置)
Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置)
之间,则sudo受影响。
建议升级到sudo 1.9.5p2及更高版本来修复漏洞。 -
以一个拥有sudo权限的非root用户登录系统,并执行命令sudoedit -s /
– 如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
– 如果响应一个以usage:开头的报错,那么表明补丁已经生效。
解决方法:
-
使用官方源更新:
经在ubuntu18上测试,ubuntu通过apt install sudo 更新sudo后,用上面的方法2 测试,放回usage开头的报错提示,说明ubuntu官方已经修复了漏洞(这种方法修复可能不会改变sudo版本)。
其他系统没有测试,不保证可行。 -
手动源码安装sudo:
更新前做好重要文件备份工作。
备份sudo的pam配置文件,卸载旧版本的sudo:
对于centos系列系统:
mv /etc/pam.d/sudo /etc/pam.d/sudo.bak
mv /etc/pam.d/sudo-i /etc/pam.d/sudo-i.bak
yum remove -y sudo
对于ubuntu系列系统:
mv /etc/pam.d/sudo /etc/pam.d/sudo.bak
apt remove -y sudo
下载sudo 1.9.5p2 源码包,下载地址:https://www.sudo.ws/download.html;
下载后解压并进入源码包:
tar zxvf sudo-1.9.5p2.tar.gz
cd sudo-1.9.5p2
安装sudo所需的依赖包:
对于centso系列系统:
yum install -y openldap-devel pam-devel
对于ubuntu系列系统:
apt install -y libpam0g-dev libldap2-dev
最后编译安装sudo,并恢复备份的pam配置文件:
对于centos系列系统:
./configure --prefix=/usr/
make && make install
mv /etc/pam.d/sudo.bak /etc/pam.d/sudo
mv /etc/pam.d/sudo-i.bak /etc/pam.d/sudo-i
对于ubuntu系统:
./configure --prefix=/usr/
make && make install
mv /etc/pam.d/sudo.bak /etc/pam.d/sudo
这样sudo就更新完成了,在configure时,也可以根据自身系统情况自行添加配置项。