“熊孩子”乱敲键盘攻破了Linux桌面 大神:17年前我就警告过

  • 时间: 2021-01-22 12:57:42

  Linux 系统,居然被两个不懂任何技术的小孩“攻破”了。

  他们只是在键盘和屏幕上一通乱按,就轻松绕过密码,进入了被锁定的 Linux 系统桌面。

  最近,一位程序员父亲就这样,眼睁睁地看着自己的电脑被孩子“玩坏”。

  作为一名程序员,他首先想到的不是打骂孩子,而是——如何复现漏洞。

  他发现这个漏洞确实是孩子乱按导致的,在某些特殊按键组合下,Linux 的屏幕锁定进程会崩溃,从而绕过了密码。

  也就是说,只要有人知道了这个漏洞,无需密码就可以偷偷打开别人已经锁定的 Linux 电脑。

  他将情况反馈到官方 GitHub 上,最终这个奇怪的漏洞上周被正式修复了。

  但这并不能让程序员们放心,这些年因 Linux 桌面进程崩溃导致的安全漏洞层出不穷,屡见不鲜,你永远不知道下一个 bug 会是什么。

  孩子们“乱杀”的桌面系统漏洞

  这两个小孩,是怎么“发现”这一漏洞的呢?

  这位程序员父亲将自己的电脑锁定后,孩子们试图解锁它,就开始在电脑键盘上瞎打。

  突然,屏保界面消失,孩子们成功进入了 Linux 系统。

  什么?连密码都没有输入?

  他让他们再演示一次。这次,孩子们同样做到了,但依旧只是“乱敲”键盘而已。

  太奇怪了。

  他在两个小孩离开后,自己又悄悄地试了一下,没能成功。

  不过他认为,这肯定是个漏洞,因为已经亲眼见过两次了。

  这位程序员父亲所用的桌面系统是 Cinnamon(Linux 桌面环境之一),他推测,Cinnamon 是不是有什么奇怪的 bug,在不输入密码的情况下也能解锁桌面。

“熊孩子”乱敲键盘攻破了 Linux 桌面大神:17 年前我就警告过

  当天晚上 10 点半,他在 Linux Mint 的 GitHub 页面上反馈了这一 bug,并描述了孩子们敲击键盘的场景:

  他们同时按下了物理键盘和屏幕虚拟键盘,而且,尽量多按一些虚拟键盘。

  消息一出,马上就有网友表示,自己同样遇到了这种问题,而且用的桌面系统也是 Cinnamon。

  随后,Linux Mint 程序员火速赶往现场。

  检查后发现,这的确是一个 bug,而且 Cinnamon 4.2 以上的桌面系统,都会受到影响,因为这一版开始支持屏幕虚拟键盘了。

“熊孩子”乱敲键盘攻破了 Linux 桌面大神:17 年前我就警告过

  导致这个 bug 的具体行为是:长按“e”键,并在虚拟键盘上选中“ē”。

  现在,Linux Mint 已经为这个漏洞推出了一个新补丁,不过需要自己手动安装。

  人生苦短,不如用 KDE(手动狗头)。

  大神:17 年前我就警告过他们

  对于如此荒谬而简单的漏洞,自然引起各路程序员对 Linux 桌面的吐槽。

  关于这个问题的 GitHub issue 页面都被程序员们玩坏了。

  有人说:这个 CVE 应该归功于孩子们…

“熊孩子”乱敲键盘攻破了 Linux 桌面大神:17 年前我就警告过

  还有人在回帖中发个表情包:我想程序员们应该会这样复现 bug。

  但要论吐槽最狠的,还是著名程序员大神 jwz。

  今天凌晨,这位大神又双叒叕发了一篇文章来吐槽此事,标题是《我已经告诉过你们之 2021 版》。

“熊孩子”乱敲键盘攻破了 Linux 桌面大神:17 年前我就警告过

  因为早在 17 年前,他就警告过 Cinnamon 和 GNOME 官方:

  如果没有在 Linux 上运行 XScreenSaver,那么可以你的屏幕就相当于没有锁定。

  之后每隔几年,jwz 都会出来把这段话再说一遍。

  jwz 还调侃说:“翻车”一次是偶然,两次是巧合,三次是敌人的破坏,四次是 GNOME 官方。

  而这四次安全漏洞,jwz 都有详细的记录:

  CVE-2019-3010,从 Oracle Solaris 屏幕保护程序可以获得特殊权限升级;

  CVE-2014-1949, MDVSA-2015:162:在 Cinnamon 屏幕保护程序中按菜单键,再按 ESC 键,就可以进入 shell;

  按住向下键,解锁 Cinnamon 屏幕保护程序;

  按住回车键,解锁 GNOME 屏幕保护程序。

  修 bug 引发的新漏洞

  导致 Linux Mint 漏洞是由于 3 月前修复另一个 bug 引起的。

“熊孩子”乱敲键盘攻破了 Linux 桌面大神:17 年前我就警告过

  这个漏洞存在于 Linux 显示服务 xorg-x11-server 中,其最大威胁是对数据机密性和完整性以及系统可用性的威胁。

  更让人哭笑不得的是,Ubuntu 20.04 在向后移植 xorg 的时候,由于使用了没有该 bug 的 1.20.9 版,反而逃过一劫。

  当 Ubuntu 的开发人员意识到没有打上 CVE-2020-25712 补丁后,他们又中了新的漏洞。

  结果就是,xorg 更新修复以后,任何人都可以让屏幕锁定程序崩溃,然后进入桌面。

  无独有偶,这不禁让人想起 GNOME 两个月前的另一个“低级”漏洞。

  一位程序员通过将账户服务陷入无限循环,使 GNOME 的账户守护程序崩溃。之后就能在锁定界面添加新的 sudo 用户,并获取 root 权限。

“熊孩子”乱敲键盘攻破了 Linux 桌面大神:17 年前我就警告过

  这个锅该让 GNOME 来背吗?jwz 认为,归根结底是因为现在的 Linux 图形化界面根基 X11 存在着不可修复的严重问题:

  1、锁定和身份验证是操作系统级别的问题。

  尽管 X11 是 Linux 计算机操作系统的核心,但它的设计没有安全性可言,锁定程序必须以普通的、非特权的用户级应用程序一样运行。

  2、X11 体系结构的这一错误永远无法修复。

  X11 太旧、太僵化,并且有太多利益相关者无法对它进行任何有意义的更改。这就是为什么人们不断尝试替换 X11 的原因并失败了,因为它根深蒂固。

  虽然现在有 Wayland 作为 X11 的替代品,但仍有网友替换为 Wayland 后,Ubuntu 桌面依然存在某些缺陷。

  比如唤醒电脑后,会在原来的桌面停留 10~20 秒才能进入锁屏状态,这个过程中桌面的隐私会一览无余。

  鉴于 Linux 桌面的安全性问题漏洞百出,为了防止未被发现漏洞遭利用,有用户建议先安装 XSecureLock,多上一把锁。

  我热切期待着听到他们如何解决这个问题。

  jwz 在自己的博客里如是说。