【高危】- Sudo 堆缓冲区溢出漏洞通告(CVE-2021-3156)
■ 漏洞描述
在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而无需进行身份验证,攻击者不需要知道用户的密码。成功利用此漏洞可以获得root权限
 
■ 影响范围
sudo: 1.8.2 - 1.8.31p2
sudo: 1.9.0 - 1.9.5p1
 
■ 漏洞检测
匹配软件版本号
以非root用户登录系统,并使用命令sudoedit -s /
- 如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
- 如果响应一个以usage:开头的报错,那么表明补丁已经生效
 
■ 漏洞修复
下载升级sudo软件包,下载链接为:
https://www.sudo.ws/dist/
 
■ 临时修复
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命令仍将照常工作。上述更改在重启后失效,必须在每次重启后重新应用。
4、安装补丁程序后,可通过取消systemtap进程来删除systemtap脚本。
例如:kill -s SIGTERM 7590 (其中7590是systemtap进程的PID)
 
■ 漏洞详情
https://mp.weixin.qq.com/s/1pyFCZ0DiuYXFMaLtN3iaQ