- 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确认版本是未受影响的版本即可。