缓冲区“重影”现象
在某些情况下,可以在监视器上观察(旧的和当前使用的)图形缓冲区的内容,当与肩部冲浪结合使用时,会造成信息泄露风险:
- 在某些堆叠和平铺窗口管理器中快速增长窗口(总是)
- 关闭 X11 服务器(有时)
(1) 屏幕的一部分或整个 (2) 屏幕将显示当前活动窗口的一部分(来自可能不同的工作区/桌面)或很久以来关闭的窗口。
根据窗口破坏后的年龄和缓冲区活动,这些有时看起来轻微或严重“损坏”。显示的剩余缓冲区有时看起来像“精灵表”。
这种现象在调整大小时会发生几分之一秒,或者在 X11 关闭时会发生约 1 秒,因此提供屏幕截图是不切实际的。对不起。
核心问题
我如何切实地减轻或消除披露这些剩余缓冲区中包含的信息的风险?
这假设总是隐藏我的显示器是不切实际的,这将是经典的反肩冲浪方法。
附加信息
尝试解释原因
这只发生在本地 X 服务器上,而不是通过 ssh,所以我假设底层缓冲区在显卡内存中。
基于咨询 xlib 文档的假设:
X11 服务器提供了一个放大的缓冲区来绘制(现在更大的)窗口,但是在 X11 服务器开始显示它之前,提供窗口的应用程序并没有完全清除/绘制到这个窗口中。这会导致缓冲区中的一些垃圾数据被读出,如果缓冲区的内存以前用于另一个窗口,则这些数据有时恰好是连贯的图像。
X11 服务器关闭后,旧窗口的底层缓冲区中仍然存在垃圾数据。显卡还处于激活状态,但是内核模式设置还没有接管,有一段时间输出垃圾数据。
在这些设置上重现
在窗口调整大小和 X11 服务器关闭时:
- Arch Linux(最新)、i3、xorg-server 1.18.3-1、nvidia-340xx、Nvidia GT218
- OpenSuSE Linux 13.2|42.1、i3、x11-video-nvidiaG02|G03|G04、Nvidia G98 Quadro
- Debian Jessie Linux, i3, xorg-server, nouveau|mesagl, intel 集成显卡
在 X11 服务器关闭时:
- Opensuse 13.2|42.1、LXDE|GNOME|KDE、x11-video-nvidiaG02|G03|G04、Nvidia G98 Quadro