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