因为 sudo 新的漏洞可使任意用户无需密码获得 root 权限,那么如何知道修复或还没修复该漏洞呢?其实可以在没联网的 Linux 系统终端中运行 sudoedit -s / 命令看看,未修复和已修复的返回信息都是不同的。
未修复和已修复的效果截图 检查当前使用的 sudo 是否已经修复漏洞的方法: sudoedit -s / 未修复的效果是下图这样的:
已修复的效果是下图这样的:
注:通过以上截图返回信息可自行判断出是否已修复了漏洞。目前主流Linux发行版已经推送了 sudo 的更新,第一时间修复了这个高危漏洞,但某些发行版似乎还没有推送这个更新,请高度注意。要让系统自动更新,可参考在Debian/Ubuntu上配置自动安全更新(无人值守升级)的方法。
附:漏洞详情介绍 被技术专家所发现的新 sudo 漏洞允许任何本地用户在不需要任何身份验证的情况下就可以在类 Unix 操作系统上获得 root 权限。 Sudo 实际上就是一个 Unix 程序,它使系统管理员可以为 sudoers 文件中列出的普通用户提供有限的 root 权限,与此同时保留其活动日志。Sudo 按照“最小权限原则”工作,基于该原则,Sudo 程序仅授予用户足够的权限来完成工作,而不会损害系统的整体安全性。 当在类似 Unix 的系统上执行命令时,普通用户可以使用 sudo(superuser do)命令来以超级用户身份执行命令(如果他们具有权限或知道超级用户的密码)—— root 是系统的超级用户,即一个特殊的系统管理帐户。 1、任何本地用户的 root 权限 Qualys 的安全研究人员发现并跟踪了被命名为 CVE-2021-3156 的 Sudo 权限升级漏洞。根据 Qualys 研究人员的发现,此漏洞产生的原因是基于任何本地用户(普通用户和系统用户,无论是否在 sudoers 文件中列出)都可以利用基于堆的缓冲区溢出而实现的,攻击者无需知道用户密码即可成功利用此漏洞。 Sudo 错误地在参数中转义了反斜杠字符,从而触发了缓冲溢出,最终导致任何本地用户都可以获得 root 权限。通常,在 shell 中(sudo -s 或 sudo -i)运行命令时,sudo 都会转义特殊的字符。但是,在使用 sudoedit -s 或 sudoedit -i 时实际上又没有进行转义,这使得缓冲区溢出成为了可能。 利用这些漏洞,Qualys 的研究人员能够在多个 Linux 发行版上获得完整的 root 权限,研究人员分别在 Debian 10(Sudo 1.8.27)、Ubuntu 20.04(Sudo 1.8.31)和 Fedora 33(Sudo 1.9.2)上重现了 CVE-2021-3156 漏洞。根据 Qualys 的说法,CVE-2021-3156 漏洞在其他 Sudo 所支持的操作系统和发行版中同样存在。 2、漏洞在对外公开前就已修复 该漏洞最早是在 2011 年 7 月由 Sudo 程序引入进系统之中,距今已接近 10 年时间。它会影响从 1.9.0 到 1.9.5p1 的所有稳定版本,以及从 1.8.2 到 1.8.31p2 的所有旧版本的默认配置。 Qualys 于 2021 年 1 月 13 日就在 Sudo 程序的内部社群披露了此漏洞,而当前 Sudo 开发者正式推出 sudo 1.9.5p2 版本,并在该版本中修复了漏洞。为了防止该漏洞被滥用,因此直到现在 Qualys 才正式对外披露了他们的发现。 要测试你的系统是否受到该漏洞影响,首先必须以非 root 用户的身份登录系统并运行 “sudoedit -s /”命令。易受攻击的系统将引发以 “sudoedit:” 开头的错误,而已修补系统将显示以 “usage:”开头的错误。 使用 Sudo 将 root 权限委派给其他用户的系统管理员应尽快升级到 sudo 1.9.5p2 或更高版本。
引起的后果 恶意程序可以通过这个漏洞直接获得 root 权限,都不需要骗用户输入密码了。即只要用户运行了这个软件,就有可能通过 sudo 的这个漏洞获取 root 权限,然后为所欲为,所以,请用户务必修复该漏洞。
相关主题 |