桌面闪烁过去锁定屏幕

信息安全 密码 linux 帐户锁定
2021-08-20 23:10:54

我正在使用Fedora 22Gnome 3我为我的用户帐户设置了密码,因此当我的笔记本电脑从睡眠中唤醒时,我会看到锁定屏幕,并且必须输入我的密码才能进入我的桌面。经常(可能是 10% 的时间),当我从睡眠模式唤醒我的计算机时,我看到我的桌面在出现锁定屏幕之前有一个非常短暂的“闪烁”(我的所有窗口仍然打开)。在我看来,在用户通过身份验证之前,设计合理的安全机制甚至根本不会打开桌面。这是严重安全漏洞的迹象吗?这是一个可预防的设计决策吗?

1个回答

从某种意义上说,这不是“安全漏洞”,即某些东西被破坏或闪烁表明存在错误或攻击。相反,这是 Linux 的底层图形堆栈和特权桌面客户端缺乏语义的问题。

只是为了解决这个问题,闪烁很可能是由于您的 GPU 驱动程序和 GNOME Shell 或 GDM 中的任何内置 Wayland 合成器之间的不良交互造成的。它与安全性完全无关。

现在了解为什么您会在锁定屏幕下方看到您的桌面...

历史情况

X11 是所有 Linux 系统上使用的协议和图形堆栈服务器,其设计并没有能够有效地将窗口相互隔离,原始 X11 协议和它的许多扩展都使应用程序欺骗成为可能和容易身份验证 UI 对话框并从其他客户端窃取输入。

因此,传统上,锁屏只是以下程序:

  • 在所有其他窗口之上生成全屏(通过在其窗口上使用特定的 WM 选项
  • 抓取所有输入(实际上,它们可以绑定键盘上的每个组合键,以确保首先将所有输入事件分派给它们)

在这个阶段,您可以打开一个 TTY 并终止抓取输入并覆盖屏幕的用户态进程,并且您可能会尝试在其顶部弹出一些其他窗口(但它无法接收键盘事件)。另请注意,在 X11 中,当菜单打开时,键盘事件不会正确调度。因此,如果您可以生成一个应用程序并使其打开一个菜单,您可能能够阻止锁定屏幕获得输入。到现在为止还挺好。

想到的最明显的安全漏洞是图形堆栈服务器/合成器无法识别特定窗口是否是锁屏,以及特定窗口是否声称是锁屏但不是。这也是 OSX 和 Windows 8 上的问题,我之前在 XDC 上讨论过针对锁屏欺骗的唯一适当保护是使用 2 因素身份验证。

不太可接受的保护形式是安全注意序列(Windows 的 Ctrl+Alt+Del)或难以欺骗且易于识别的特殊锁定屏幕功能(屏幕外但可见的指示器、仅用于锁定屏幕的全屏等)。换句话说,您需要用户和触发锁屏的操作系统之间的可信路径,并且您还需要锁屏对用户进行身份验证。

GNOME-Wayland 有什么改变吗?

可悲的是没有它应该有的那么多。由于 Wayland 的输入调度协议,您现在有了更强有力的保证,即您的合法锁屏不会被窃取其输入。但是您无法确定您面前的是否是您的实际锁屏。

为什么?GNOME 是第一个“实施”Wayland 的强烈动机,所以他们只是复制/粘贴了一些糟糕的、不安全的 X11 协议(特别是选择、访问特殊硬件的方法、绑定全局快捷方式和访问全屏)。如果没有我上面设置的要求,锁屏很容易被欺骗,而且 GNOME Shell 开发人员还没有实施对策。我已经与其中一位私下讨论过这个话题,并得出结论,他们对讨论任何针对图形堆栈安全漏洞的跨桌面防御不感兴趣。有人告诉我,他们将使用自定义方法解决所有基础安全问题,这些方法在未来的某个时候会更好。

没有为此类工作设定议程,也没有证据表明会进行。Red Hat 的安全工程师正忙于应用沙盒和 Docker 相关的东西,他们不太可能在短期内有任何人力来解决桌面安全问题,而且现在代码已经在野外实现和使用,更不可能有人会想要重新更改 Wayland API。更糟糕的是,为了不再修改工具包或桌面应用程序,其他 DE 可能希望遵循 GNOME 并让一些 API 不安全。

上次我与他们交谈时,KDE 人员对构建 2FA 很感兴趣,因此几年后 Linux 桌面可能会有一个可行的、不那么不安全的锁屏。