vlambda博客
学习文章列表

CentOS7 Sudo本地提权漏洞修复实践

更多技术干货,第一时间送达

CentOS7 Sudo本地提权漏洞修复

CentOS7 Sudo本地提权漏洞修复实践

Sudo本地提权漏洞漏洞概述

最近国外研究团队披露出sudo堆溢出漏洞,漏洞编号:CVE-2021-3156,普通用户可以通过利用此漏洞,在默认配置的 sudo 主机上获取root权限。

  • 漏洞详情

Sudo是一个功能强大的实用程序,大多数基于Unix和Linux的操作系统都包含Sudo。它允许用户使用其他用户的安全特权运行程序。

该漏洞已经隐藏了将近十年。它于2011年7月引入(commit:8255ed69),从1.8.2到1.8.31p2的所有旧版本以及从1.9.0到1.9.5p1的所有稳定版本的默认配置均受影响。

成功利用此漏洞,普通用户都可以在易受攻击的主机上获得 root 特权 

2021年1月26日,Sudo发布安全通告,修复了一个类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞。

当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。

只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。

  • 风险等级:高风险

  • 漏洞风险: 攻击者可利用该漏洞提升权限且poc已公开

  • 影响版本

Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置)

Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置)

  • 安全版本:Sudo 1.9.5p2或更新版本

漏洞检测方法

1、以非root账户登录系统运行如下命令:

sudoedit -s /

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

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

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

1)若受影响,错误信息会出现如下提示

sudoedit: /: not a regular file

2)若已安装修复补丁,错误信息则是

usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p

                prompt] [-T timeout] [-u user] file ...

修复建议

目前Redhat等Linux厂商已经紧急发布修复补丁,涉及各个版本系统,建议尽快升级相关补丁。CentOS 系统用户:

1)CentOS 6:默认 sudo 在受影响范围,CentOS官方已停止更新。

2)CentOS 7:升级到 sudo-1.8.23-10.el7_9.1 或更高版本

木有也有不升级的处理方法,但太麻烦,建议直接升级sudo解决

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

CentOS7修复该漏洞的步骤实践

1、yum在线升级sudo

yum makecache fast
yum search sudo
yum install sudo

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

可以在yum源站点update仓库里看到1/26号刚更新了这个sudo版本

CentOS7 Sudo本地提权漏洞修复实践

(图片可放大查看)

2、验证sudo版本及再次进行检测 这时其它sudo用户再使用

sudo -V
sudoedit -s /

(图片可放大查看)

可以看到显示的是usage:开头的内容,说明漏洞已经修复

3、使用如下命令可以看到sudo的rpm包的更新记录说明 可以看到已经修复了该CVE-2021-3156漏洞

rpm -q --changelog sudo | head

(图片可放大查看)

漏洞细节可以参考如下链接:

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

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