sudo本地提权漏洞(CVE-2021-3156)
发布时间 2021-01-270x00 漏洞概述
CVE ID | CVE-2021-3156 | 时 间 | 2021-01-27 |
类 型 | 权限提升 | 等 级 | 高危 |
远程利用 | 否 | 影响范围 |
0x01 漏洞详情
Sudo是一个功能强大的工具,其允许普通用户执行root权限命令,大多数基于Unix和Linux的操作系统都包含sudo。
2021年01月26日,sudo被披露存在一个基于堆的缓冲区溢出漏洞(CVE-2021-3156,该漏洞被命名为“Baron Samedit”),可导致本地权限提升。
当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码。
安全研究人员于1月26日公开披露了此漏洞,并表示该漏洞已经隐藏了近十年。
影响范围
Sudo 1.8.2 - 1.8.31p2
Sudo 1.9.0 - 1.9.5p1
测试系统是否易受此漏洞影响:
1. 以非root用户身份登录系统。
2. 运行命令“sudoedit -s /”
3. 如果出现以“ sudoedit:”开头的错误响应,则系统受到此漏洞影响;如果出现以“ usage:”开头的错误响应,则表示该漏洞已被补丁修复。
0x02 处置建议
建议及时升级sudo至最新版本。
下载链接:
https://www.sudo.ws/dist/
临时措施(RedHat)
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&
这将输出systemtap脚本的PID编号,该脚本将导致易受攻击的sudoedit二进制文件停止工作,sudo命令仍将照常工作。
注意,上述更改会在重启后失效,必须在每次重启后重新应用。
4.一旦安装了补丁程序,就可以通过终止systemtap进程来删除systemtap脚本。例如,通过使用以下命令,其中7590是systemtap进程的PID。
#kill -s SIGTERM 7590
0x03 参考链接
https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit
https://access.redhat.com/security/cve/CVE-2021-3156
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3156
https://www.bleepingcomputer.com/news/security/new-linux-sudo-flaw-lets-local-users-gain-root-privileges/
0x04 时间线
2021-01-26 Qualys披露漏洞
2021-01-27 RedHat发布安全公告
2021-01-27 VSRC发布安全通告
0x05 附录
CVSS评分标准官网:http://www.first.org/cvss/