1、漏洞背景描述
2021 年 1 月 27 日,RedHat 官方发布 sudo 堆缓冲区/溢出漏洞(CVE-2021-3156)通告。
2、漏洞概述
Sudo 是一个功能强大的实用程序,大多数基于 Unix 和 Linux 的操作系统都包含 Sudo。它允许用户使用其他用户的安全特权运行程序。
Sudo 堆缓冲区溢出漏洞可实现本地提权。任何本地用户(包括普通用户和系统用户,sudoer 和非 sudoers)若成功利用该漏洞,可在无需密码的情况下获得 root 权限。
3、漏洞风险
攻击者成功利用该漏洞,可在无需密码的情况下获得root 权限。
4、漏洞影响
Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置)
Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置)
5、修复建议
(一)下载升级sudo 软件包至 1.9.5p2 或更新版本,下载链接为:https://www.sudo.ws/dist/ 。
(二)对于无法立即更新的用户,建议使用systemtap 进行临时缓解,详细步骤如下:
(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://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txt
https://access.redhat.com/security/cve/CVE-2021-3156