Sudo bug 可导致非权限 Linux 和 MacOS 用户以根身份运行命令

苹果公司的研究员 Joe Vennix  sudo 中再次发现了一个重要漏洞,在某种特定配置下可导致低权限用户或恶意程序以管理员(根)权限在 Linux  macOS 系统上执行任意命令。Sudo 是最重要、最强大也最常用的工具,它是预装在 macOS 以及几乎所有 UNIX 或 Linux 操作系统上的核心命令。Sudo 旨在无需转换环境的情况下,让用户以其它用户的权限运行应用或命令。

Sudo 漏洞 (CVE-2019-18634)

这个新发现的提权漏洞 (CVE-2019-18634) 源自存在于 1.8.26 之前的Sudo版本的基于栈的缓冲溢出问题。Vennix指出,只有在启用了sudoers 配置文件的“pwfeedback”选项时才能利用该缺陷;当用户在终端输入密码时, pwfeedback 功能会给出一个可视的反馈即星号 (*)。需要注意的是,pwfeedback功能在 sudo 或很多其它包的上游版本中并非默认启用。然而,某些 Linux 发行版本如 Linux Mint 和 Elementary OS 在默认 sudoers 文件中确实启用了该功能。此外,当启用 pwfeedback 功能时,该漏洞可遭任何用户利用,即使无 sudo 许可也不例外。Sudo 开发人员 ToddC. Miller 解释称,“当提示输入密码时,可通过一个管道将大量输入传递给 sudo。由于攻击者完全控制了溢出该缓冲区的数据,因此有很高的利用可能性。”

检验是否受影响以及打补丁

要判断 sudoers 配置是否受影响,用户可在 Linux 或 macOS 终端上运行“sudo –l”命令,查找是否启用了“pwfeedback”选项并监听“MatchingDefaults entries”输出。如启用,则可通过在 sudoers 配置文件中将“Defaultspwfeedback”更改为“Defaults!pwfeedback”的方式禁用该易受影响的组件,阻止对该提权漏洞的利用。Vennix负责任地将该漏洞报告给 Sudo 的维护人员,后者在上周发布了带有补丁的 sudo 版本 1.8.31。Miller表示,“虽然该逻辑 bug 还存在于 sudo版本1.8.26 至1.8.30 中,但由于 sudo1.8.26 版本中引入了 EOF 处理变化,因此该 bug 不可遭利用。”上周,苹果公司已为 macOS High Sierra 10.13.6、macOS Mojave 10.14.6和macOS Catalina 10.15.2 发布了补丁更新。去年,Joe Vennix 发布了一个具有类似影响的 Sudo 漏洞,只要将用户 ID 指定为“-1”或“4294967295”,则可导致攻击者以根身份运行命令。