The Buffer "Ghosting" Phenomenon
It is possible to observe contents of (old and currently used) graphics buffers on a monitor under certain circumstances, posing an information disclosure risk, when combined with shoulder surfing:
- Growing a Window rapidly in some Stacking and Tiling Window Managers (always)
- Shutting down the X11 server (sometimes)
Either part of (1) or the whole (2) screen will show portions of currently active windows (from possibly different workspaces/desktops), or long-since closed Windows.
These sometimes look lightly or heavily "corrupted" depending on age and buffer activity since window destruction. Remnant buffers shown sometimes look like "sprite sheets".
This phenomenon occurs for a fraction of a second on resize, or ~1 second on X11 shutdown, making it impractical to provide screenshots. Sorry.
The Core Question
How do I feasibly mitigate or eliminate the risk of disclosing the information contained in these remnant buffers?
This assumes that it is impractical to always hide my monitor, which would be the classic anti-shoulder-surfing method.
Attempt at explaining the causes
This only happens on local X servers, not over ssh, so I assume the underlying buffers are in the graphics card memory.
Hypotheses based on consulting xlib documentation:
The X11 server provides an enlarged buffer in which to paint the (now larger) window, but the application providing the window does not fully clear/paint into this window before the X11 server begins to display it. This leads to the reading out of some garbage data in the buffers, which sometimes happen to be coherent images if the memory of the buffer was used for another window previously.
After X11 server shutdown there remains garbage data in the underlying buffers from old windows. The graphics card is still active, but kernel mode setting has not taken over yet, and garbage data is output for some time.
Reproduced on these setups
On Window resize & X11 Server shutdown:
- Arch Linux (latest), 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 integrated graphics
On X11 server shutdown:
- Opensuse 13.2|42.1, LXDE|GNOME|KDE, x11-video-nvidiaG02|G03|G04, Nvidia G98 Quadro