【最新】CVE-2021-3156漏洞预警

发布者:星河Salaxy
发布于:2021-04-01 11:19

一.   简介


2021年1月26日,Linux安全工具sudo被发现严重的基于堆缓冲区溢出漏洞。利用这一漏洞,攻击者无需知道用户密码,一样可以获得root权限,并且是在默认配置下。此漏洞已分配为CVE-2021-3156,危险等级评分为7分。

当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或-i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。因此只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。研究人员利用该漏洞在多个Linux发行版上成功获得了完整的root权限,包括Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2),并且sudo支持的其他操作系统和Linux发行版也很容易受到攻击。

目前漏洞细节已公开,请受影响的用户尽快采取措施进行防护。



二.   影响版本

Sudo 1.8.2 - 1.8.31p2

Sudo 1.9.0 - 1.9.5p1




三.   漏洞检测


 首先以非root用户的身份登录,并运行“sudoedit -s /”命令。

有漏洞的系统会抛出一个以“sudoedit:”开头的错误,而打过补丁的系统则会显示一个以“usage:”开头的错误。

图片



四.   防御建议


 1. 官方升级

目前官方已在sudo新版本1.9.5p2中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:https://www.sudo.ws/download.html

注:建议用户在升级前做好数据备份工作,避免出现意外

2.临时防护措施

Red Hat相关用户若暂时无法进行升级操作,建议使用以下方法缓解:

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). 创建以下系统调用脚本:(将文件命名为sudoEd-lock.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命令仍然可以正常工作。

            注:上述修改在重启后失效,必须在每次重启后重新应用。

            一旦安装了新的补丁包,系统分页脚本就可以被删除,可以通过取消systemtap进程来删除systemtap脚本。例如,通过执行以下命令:

              kill -s SIGTERM 7590 (where 7590 is the PID of the systemtap process)

              警告:不要试图通过删除符号链接来禁用sudo编辑,因为这不是一个好的缓解选项。



              五.   参考链接


              https://access.redhat.com/security/vulnerabilities/RHSB-2021-002

              https://www.sudo.ws/alerts/unescape_overflow.html



              声明:该文观点仅代表作者本人,转载请注明来自看雪