作为安装在几乎所有基于UNIX和Linux操作系统上的核心命令,Sudo是最重要、最强大且最常用的实用程序之一。
近日,安全专家发现Sudo中出现一个新漏洞,该漏洞是sudo安全策略绕过问题,可导致恶意用户或程序在目标Linux系统上以root身份执行任意命令。
Sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令,通常是以 root 用户身份运行命令,以减少 root 用户的登录和管理时间,同时提高安全性。
幸运的是,该漏洞仅在非标准配置中有效,并且大多数Linux服务不受影响。
据悉,这个漏洞的编号是 CVE-2019-14287 ,它是由苹果信息安全部门的研究员 Joe Vennix 发现并分析的 。
在获得此漏洞之前,重要的是要掌握一些有关sudo命令如何工作以及如何进行配置的背景信息。
在Linux操作系统上执行命令时,非特权用户可以使用sudo(超级用户身份)命令以root身份执行命令,只要它们已被授予权限或知道root用户的密码即可。
sudo命令还可以配置为允许用户通过向/etc/sudoers配置文件添加特殊命令来以其他用户身份运行命令。
例如,以下命令允许用户’test’以root身份以外的任何用户身份运行/usr/bin/vim和usr/bin/id命令。
test ALL = (ALL, !root) /usr/bin/vim
test ALL = (ALL, !root) /usr/bin/id
为了使’test’用户执行上述命令之一,他们将使用带有-u参数的sudo命令来指定运行用户。例如,以下命令将以vibleing-test用户身份启动vim。
sudo -u bleeping-test vim
在Linux中创建用户时,将为每个用户分配一个UID。如下所示,用户’test’的UID为1001,'bleeping-test’用户的UID为1002。
启动sudo命令时,用户可以使用这些UID代替用户名。例如,下面的命令将再次以“测试”的形式启动VIM,但这一次是通过提供用户的UID来启动的。
sudo -u#1002 vim
苹果安全研究员Joe Vennix发现一个错误,该错误允许用户通过在sudo命令中使用-1或 4294967295 UID以root身份启动允许的sudo命令。
例如,即使在/etc/sudoers文件中明确拒绝了‘test’用户,以下命令也可以利用该错误以root身份启动/usr/bin/id用户。
sudo -u#-1 id
下面也说明了如何将这个错误与/usr/bin/id命令一起使用以获取root特权。
尽管该错误功能强大,但重要的是要记住,只有通过sudoers配置文件为用户提供了对命令的访问权限,它才能起作用。如果不是这样,并且大多数Linux发行版默认情况下都没有,那么此错误将无效。
据悉,CVE-2019-14287漏洞影响1.8.28之前的Sudo版本。
强烈建议用户尽快将sudo软件包更新为最新版本!
参考文章:
Linux SUDO Bug Lets You Run Commands as Root, Most Installs Unaffected
领取专属 10元无门槛券
私享最新 技术干货