【最新】CVE-2021-3156漏洞预警 – 作者:星河工业安全

一.   简介

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安装命令:

sudodebuginfo:debuginfo-installsudo

2). 创建以下系统调用脚本:(将文件命名为sudoEd-lock.stap)

<code><span style="padding:0px; max-width:1000%;">probe process(<span style="padding:0px; max-width:1000%; color:rgb(221, 17, 68);">"/usr/bin/sudo"</span>).<span style="padding:0px; max-width:1000%; color:rgb(202, 125, 55);">function</span>(<span style="padding:0px; max-width:1000%; color:rgb(221, 17, 68);">"main"</span>)  {</span></code><code><span style="padding:0px; max-width:1000%;"><br></span></code><code><span style="padding:0px; max-width:1000%;">        <span style="padding:0px; max-width:1000%; color:rgb(202, 125, 55);">command</span> = cmdline_args(0,0,<span style="padding:0px; max-width:1000%; color:rgb(221, 17, 68);">""</span>);</span></code><code><span style="padding:0px; max-width:1000%;"><br></span></code><code><span style="padding:0px; max-width:1000%;">        <span style="padding:0px; max-width:1000%; color:rgb(202, 125, 55);">if</span> (strpos(<span style="padding:0px; max-width:1000%; color:rgb(202, 125, 55);">command</span>, <span style="padding:0px; max-width:1000%; color:rgb(221, 17, 68);">"edit"</span>) >= 0) {</span></code><code><span style="padding:0px; max-width:1000%;"><br></span></code><code><span style="padding:0px; max-width:1000%;">                raise(9);</span></code><code><span style="padding:0px; max-width:1000%;">        }</span></code><code><span style="padding:0px; max-width:1000%;">}</span></code>

3). 使用以下命令安装脚本:(使用root权限)

nohupstap -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

来源:freebuf.com 2021-04-08 11:03:02 by: 星河工业安全

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论