【风险通告】Sudo堆缓冲区溢出漏洞
1月27日,金山云安全应急响应中心监测到国外安全研究人员披露了一个sudo 堆缓冲区溢出致本地提权的漏洞,漏洞编号为CVE-2021-3156。
该漏洞几乎影响所有Linux发行版,建议使用了sudo的用户及时升级到最新版本或采取相关措施,避免被黑客攻击造成损失。
风险等级
高危
漏洞描述
Sudo是一个功能强大的实用程序,大多数基于Unix和Linux的操作系统都包含sudo。
在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。任何本地用户(包括普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,无需进行身份验证,也不需要知道用户的密码,成功利用此漏洞可以获得root权限。
影响版本
Sudo1.9.0到 1.9.5p1 所有稳定版(默认配置)
Sudo1.8.2到 1.8.31p2所有版本
检测方法
以非root用户登录系统,并使用命令sudoedit -s /
- 如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
- 如果响应一个以usage:开头的报错,那么表明补丁已经生效。
修复建议
通用方案:
升级到1.9.5p2 或更新版本,sudo软件包下载地址:
暂缓方案:
对于无法立即更新的用户,建议使用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)
参考链接
[1]https://access.redhat.com/security/cve/CVE-2021-3156
北京金山云网络技术有限公司
2021/01/27