微慑信息网

Linux sudo权限提升漏洞(CVE-2021-3156)[附检测及修复方法]

通告编号:NS-2021-0005

2021-01-27
TAG: Sudo、权限提升、CVE-2021-3156
漏洞等级: 攻击者利用此类漏洞,可实现本地权限提升。
版本: 1.0
1

漏洞概述

1月26日,Sudo发布安全通告,修复了一个类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。只要存在sudoers文件(通常是 /etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。目前漏洞细节已公开,请受影响的用户尽快采取措施进行防护。

参考链接:

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

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

SEE MORE →

 

2影响范围

受影响版本

  • Sudo 1.8.2 – 1.8.31p2

  • Sudo 1.9.0 – 1.9.5p1

不受影响版本

  • sudo =>1.9.5p2

3漏洞检测

3.1  人工检测

用户可以使用非root的账户登录系统,运行“ sudoedit -s / ”命令,

【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)

若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。

不受影响的系统将显示以“ usage:”开头的错误响应。

 

4漏洞防护

4.1  官方升级

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

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

4.2 临时防护措施

Red Hat相关用户若暂时无法进行升级操作,可使用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脚本。例如,通过使用以下命令(其中7590是systemtap进程的PID):

# kill -s SIGTERM 7590

END

作者:绿盟科技威胁对抗能力部

【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)         
【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)        
声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

 

原文始发于微信公众号(绿盟科技安全情报):【漏洞通告】Linux sudo权限提升漏洞(CVE-2021-3156)

拓展阅读(点评/知识):

漏洞描述

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软件包下载地址:

https://www.sudo.ws/dist/

暂缓方案:

对于无法立即更新的用户,建议使用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

[2]https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

本文标题:Linux sudo权限提升漏洞(CVE-2021-3156)[附检测及修复方法]
本文链接:
(转载请附上本文链接)
http://vulsee.com/archives/vulsee_2021/0127_13733.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » Linux sudo权限提升漏洞(CVE-2021-3156)[附检测及修复方法]
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微慑信息网 专注工匠精神

访问我们联系我们