sudo本地提权漏洞(CVE-2021-3156)

发布时间 2021-01-27

0x00 漏洞概述

CVE  ID

CVE-2021-3156

时   间

2021-01-27

类   型

权限提升

等   级

高危

远程利用

影响范围


 

0x01 漏洞详情

image.png

 

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/

image.png