0X1 漏洞概述
2019年10月14日,Sudo官方发布了Sudo 1.8.28版本,其中包含sudo root权限绕过漏洞的补丁修复。
此漏洞编号是CVE-2019-14287,当sudo配置为允许用户以任意方式运行命令时用户通过Runas规范中的ALL关键字,可以通过指定用户ID -1或4294967295以root用户身份运行命令。
具有足够sudo权限的用户可以使用它来运行Runas规范明确禁止使用的root命令,以这种方式运行的命令的日志条目将列出目标用户为4294967295而不是root。
0X2 漏洞分析
Sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令,通常是以 root 用户身份运行命令,以减少 root 用户的登录和管理时间,同时提高安全性。
在大多数Linux发行版在/etc/sudoers文件中RunAs规范中的ALL关键字允许admin或sudo组中的所有用户以系统上的任何有效用户身份运行任何命令。
但是,由于特权分离是Linux中的基本安全范例之一,因此管理员可以配置sudoers文件来定义哪些用户可以运行哪些命令。
因此,即使限制了用户以root用户身份运行特定命令或任何命令,该漏洞也可能允许用户绕过此安全策略并完全控制系统。
0X3 漏洞复现
打开任意一款Linux环境,查看sudo版本,确定是否小于1.8.28
然后编辑/etc/sudoers文件,增加对test账户设置的权限(这里的/bin/bash也可以换成成其他命令)
test ALL=(ALL,!root) /bin/bash
保存之后,退出。
切换账户到test账户中,测试
可以看到用户权限变成了root,漏洞利用成功!
0X4 漏洞加固
升级到最新版1.8.28
漏洞详情参考
https://www.sudo.ws/alerts/minus_1_uid.html