sudo权限提升漏洞
  • cnnvd编号:未知
  • 危害等级: 高危 
  • cve编号:cve-2021-3156
  • 漏洞类型: 权限提升
  • 威胁类型:未知
  • 厂       商:未知
  • 漏洞来源:深信服
  • 发布时间:2021-01-28
  • 更新时间:2021-01-28

漏洞简介

1、组件介绍

sudo是linux及其他类unix系统下的常用指令,用于允许普通用户执行部分root命令的工具,提高权限控制安全性。

2、漏洞描述

近日,深信服安全团队监测到一则sudo组件存在全线提升漏洞的信息,漏洞编号:cve-2021-3156,漏洞危害:高危。该漏洞是由于sudo程序在set_cmnd()函数存在堆溢出,攻击者可利用该漏洞在获得低权限的情况下,构造恶意数据进行提权,获取服务器最高权限。

3、漏洞分析

sudo在命令行中工作时,执行在shell -c模式下,如果有-s命令行参数,则设置mode_shell标志。

该模式下的parse_args函数对输入进行了语法检查,其中对含有\的命令的转义。此后这些命令在set_cnmd将命令行参数链接到缓冲区user_args,用于按照语法解析后的含义执行,但是在命令以单个\结尾时,会导致循环判定条件始终为非终止符,从而读取输入信息至内存越界。

set_cnmd中的代码和parse_args中的代码被不同的条件限定,所以这种情况由于前置判定条件,仅能在同时设置mode_edit和mode_shell时存在,一般情况下因为设置mode_edit会导致重置valid_flags,删除mode_shell从而无法触发该漏洞。


但是当执行的身份是sudoedit而不是sudo时,会自动设置mode_edit但不重置valid_flags.(同时设置mode_check和mode_shell也可绕过判定,但是因为同样会导致重置,无法实现)这时会避免转义代码,到达易受攻击的代码。



漏洞公示

在使用受影响版本sudo的ubuntu设备复现该漏洞,效果如下:

参考网站

暂无

受影响实体

sudo是绝大多数类unix系统默认的用户权限切换程序,使用量极大。且此漏洞自1.8.2版本引入起,已经有近十年时间,全球有数千万操作系统使用了受影响版本的sudo。此漏洞涉及用户量过多,导致漏洞影响较大。


目前受影响的sudo版本:

sudo 1.8.2 - 1.8.32p2

sudo 1.9.0 - 1.9.5p1

补丁

1、自检方案

使用命令

sudo -v

如出现的版本号位于受影响的区间内,则漏洞存在;

使用命令

sudoedit -s /

如出现sudoedit开头的报错,则漏洞存在,出现usage开头的报错则不受影响。

2、官方修复建议

当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:

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

可以使用以下命令进行升级:

wget http://www.sudo.ws/dist/sudo-1.9.5p2.tar.gz

tar -zxf sudo-1.9.5p2.tar.gz

cd sudo-1.9.5p2

./configure

make

sudo make install

最后执行sudo -v确认版本是未受影响的版本即可。