0x01 漏洞描述

在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而无需进行身份验证,攻击者不需要知道用户的密码。成功利用此漏洞可以获得root权限。

0x02 影响版本

Sudo 1.8.2 - 1.8.31p2
Sudo 1.9.0 - 1.9.5p1

0x03 环境

阿里云服务器ubuntu18
版本信息:
在这里插入图片描述

0x04 POC&EXP

1、自查
以非root用户登录系统,并使用命令sudoedit -s /

  • 如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
  • 如果响应一个以usage:开头的报错,那么表明补丁已经生效。
    在这里插入图片描述

2、EXP–ubuntu
https://github.com/blasty/CVE-2021-3156

cd CVE-2021-3156
make
./sudo-hax-me-a-sandwich root

可从普通用户提权至root
在这里插入图片描述

0x05 修复建议

1、官方修补建议:
下载升级sudo软件包,下载链接为:https://www.sudo.ws/dist/

2、临时修补建议:
对于无法立即更新的用户,建议使用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)
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐