整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

Sudo,想必但凡接触过 Linux 或 Unix 操作系统的开发者都知道这个可以“为所欲为”的应用程序,系统管理员可通过 Sudo 让普通用户执行部分或全部的 root 命令。

而就在 1 月 26 日,云安全和合规解决方案公司 Qualys 披露了 Sudo 中存在的一个严重漏洞(漏洞编号为 CVE-2021-3156,Qualys 将其命名为 Baron Samedit):任何本地用户,无需密码验证就可以获取 root 权限!

隐藏了十年的漏洞

Qualys 安全研究人员指出,该漏洞是基于堆的缓冲区溢出,Sudo 作者也在 1 月 26 日的报告中简述了这个漏洞的由来:

通常,在 shell 模式下运行 sudo -s 或 sudo -i 命令时,Sudo 会在命令参数中使用反斜杠转义特殊字符。

但运行 sudoedit 时同样可能会用到 -s 或 -i,并设置启用 shell 模式的标志,那么由于此时实际上并没有运行命令,Sudo 并不会去转义特殊字符。最终,决定是否删除转义字符的代码就不会去检查命令实际上是否正在运行,只是设置了 shell 标志。这就可能导致可被利用的基于堆的缓冲区溢出。

Qualys 研究小组约两周前发现该漏洞,并且十分惊人的是,该漏洞已经隐藏了将近十年无人发现!它于 2011 年 7 月由 8255ed69 这个 commit 引入,因此过去十年中 Sudo 发布的所有版本在默认配置下都存在这一漏洞,包括从 1.8.2 到 1.8.31p2 的所有旧版本及 1.9.0 到 1.9.5p1 的所有稳定版本。

鉴于绝大多数 Linux 和 Unix 系统中都安装了 Sudo,Qualys 研究人员利用该漏洞对多个 Linux 发行版进行了测试,最终都成功获得了完整的 root 权限,包括 Debian 10(sudo 1.8.27),Ubuntu 20.04(sudo 1.8.31)和 Fedora 33(sudo 1.9.2)。

因此 Qualys 认为,攻击者也很可能在 Sudo 支持的其他操作系统和 Linux 发行版中利用该漏洞。所以在确认该漏洞后,Qualys 及时与 Sudo 作者和开源发行版进行协作并于 1 月 26 日宣布漏洞的存在。

当然,披露漏洞并不是为了让攻击者趁虚而入,Sudo 在 Qualys 公布之前就已正式修复了这个漏洞,并给出了解决方案:Sudo 更新至版本 1.9.5p2 或更高版本即可。

两年发现三个漏洞

这并不是 Sudo 第一次被发现存在漏洞,这次的 CVE-2021-3156,是这两年来 Sudo 被曝出的第三个安全漏洞了。

2019 年 10 月公布的编号 CVE-2019-14287 、被称为 -1 UID bug 的漏洞,与 2020 年 2 月公布的编号 CVE-2019-18634、被称为pwfeedback bug 的漏洞,都可以使受限制的用户运行 root 命令,不过庆幸的是,这两种漏洞很难被利用,因为它们需要复杂且非标准的 Sudo 设置。

而此次曝出的这个漏洞隐藏已久并易于利用,与前两个漏洞相比危险性最高。

有国外开发者对该漏洞成功蛰伏十年表示诧异,因此尝试对 Sudo 采用模糊测试来发现漏洞。最后发现,2 小时的 CPU 时间就能在 setuid(Sudo 是 setuid 二进制文件)实用程序中找到严重的安全漏洞。因此该开发者建议,可以快速使用模糊测试来发现广泛使用的实用程序中隐藏的严重漏洞

被广泛利用的可能性不大

庆幸的是,易于利用不代表这个漏洞可以被广泛利用。来自 Linux 基金会的 David A. Wheeler 称:“该漏洞不可远程利用,攻击者只有在易受攻击的计算机上才能利用此漏洞。”

Kenna Security 安全研究主管 Jerry Gamblin 对此也表示赞同:“该漏洞的利用需要预先存在一定级别的访问权限,因此广泛利用它的可能性不大。”即该漏洞虽然危险,由此受到广泛攻击的可能性却很小。

话虽如此,但对于已经拥有 Linux 环境初始访问权限的恶意内部人员或攻击者来说,这个漏洞的存在还是很大的隐患。僵尸网络这个攻击媒介更是不能忽视,前一阵 FreakOut 恶意软件攻击 Linux设备的事件就是前车之鉴。

一周前,据安全公司 Check Point Software 研究人员称,一种新的恶意软件,即 FreakOut,利用了最近披露的在 Linux 系统上运行的网络连接存储(NAS)设备中的漏洞,将计算机加入 IRC 僵尸网络,以发起分布式拒绝服务(DDoS),攻击并挖掘 Monero 加密货币。

因此,Qualys 也表示,如果僵尸网络运营商暴力破解低级服务帐户,那么该漏洞可能在攻击的第二阶段就被滥用,入侵者将轻松获得 root 权限,并完全控制被入侵的服务器。

除版本更新别无他法

那么现在的你应该怎么做呢?

首先,先用以下命令检测你的 Sudo 版本是否存在漏洞;

sudoedit -s '\' `perl -e 'print "A" x 65536'`

如果你收到的是 usage 或错误消息,那么恭喜,你的 Sudo 版本不会受到攻击;如果结果是 Segmentation Fault,很遗憾,你的 Sudo 存在该漏洞。

然后接下来,你就只能升级到 Sudo 1.9.5p2 版本或更高版本了,毕竟 Sudo 自己都说了:除了更新版本,其他解决方法是“None”

Sudo 1.9.5p2 下载地址为:https://www.sudo.ws/stable.html,大家尽快更新吧!

参考链接:

https://www.sudo.ws/alerts/unescape_overflow.html

https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

https://milek7.pl/howlongsudofuzz/

程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020 中国开发者大调查」,更有丰富奖品送不停!



☞字节跳动 CEO 张楠谈遭微信封禁;传蚂蚁集团将重组 ;Apache ECharts 5发布| 极客头条

☞告别手敲 SQL ?GPT-3 自动帮你写

☞Linux 在 M1 上跑起来了
☞300 多行代码搞定微信 8.0 的「炸」「裂」特效!

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐