Come mitigare il rischio di fantasma del buffer X11 (bug di palinopsia)

7

Il fenomeno del Buffer "Ghosting"

È possibile osservare il contenuto dei buffer grafici (vecchi e attualmente usati) su un monitor in determinate circostanze, ponendo un rischio di divulgazione delle informazioni, quando combinato con la navigazione a spalla:

  1. Crescere rapidamente una finestra in alcuni gestori di finestre di impilamento e affiancamento (sempre)
  2. Arresto del server X11 (a volte)

Ciascuna parte della schermata (1) o dell'intero (2) mostrerà porzioni di finestre attualmente attive (da possibili aree di lavoro / desktop) o finestre chiuse da molto tempo.

A volte sembrano "danneggiati" leggermente o pesantemente a seconda dell'età e dell'attività del buffer dalla distruzione delle finestre. I buffer residui mostrati a volte sembrano "fogli sprite".

Questo fenomeno si verifica per una frazione di secondo sul ridimensionamento, o ~ 1 secondo su X11 shutdown, il che rende poco pratico fornire schermate. Siamo spiacenti.

La domanda principale

Come faccio a mitigare o eliminare con praticità il rischio di rivelare le informazioni contenute in questi buffer residui?

Ciò presuppone che non sia pratico nascondere sempre il mio monitor, che sarebbe il classico metodo anti-spalla-surf.

Informazioni aggiuntive

Tentativo di spiegare le cause

Questo accade solo su server X locali, non su ssh, quindi presumo che i buffer sottostanti si trovino nella memoria della scheda grafica.

Ipotesi basate sulla consultazione della documentazione di xlib:

  1. Il server X11 fornisce un buffer ingrandito in cui dipingere la finestra (ora più grande), ma l'applicazione che fornisce la finestra non cancella / dipinge completamente in questa finestra prima che il server X11 inizi a visualizzarla. Questo porta alla lettura di alcuni dati spazzatura nei buffer, che a volte capita di essere immagini coerenti se la memoria del buffer è stata utilizzata per un'altra finestra in precedenza.

  2. Dopo l'arresto del server X11 rimangono dei dati inutili nei buffer sottostanti dalle vecchie finestre. La scheda grafica è ancora attiva, ma l'impostazione della modalità kernel non è ancora finita, e i dati inutili vengono emessi per qualche tempo.

Riprodotto su queste configurazioni

Ridimensiona finestra & Arresto del server X11:

  • Arch Linux (più recente), 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, grafica integrata intel

All'arresto del server X11:

  • Opensuse 13.2 | 42.1, LXDE | GNOME | KDE, x11-video-nvidiaG02 | G03 | G04, Nvidia G98 Quadro
posta mustangflyer 19.05.2016 - 22:13
fonte

1 risposta

5

Una risposta parziale:

Ciò che chiami "buffer ghosting", è anche conosciuto come bug di palinopsia . Il link fornisce un proof of concept , un breve script per mostrare la RAM video con il contenuto di applicazioni già chiuse. Oltre alla normale RAM, la RAM video GPU non viene azzerata per impostazione predefinita quando viene allocata. Alcuni driver lo fanno, altri no; azzerare la RAM costa leggermente le prestazioni.

È possibile impedire a un'applicazione di accedere alla GPU con cookie non attendibili. Esempio: %codice% xauth -f $HOME/mycookie generate . untrusted XAUTHORITY=$HOME/mycookie glxgears non verrà avviato perché non ha accesso alla GPU. L'utilizzo di glxgears anziché trusted consente l'accesso alla GPU e funziona glxgears.

L'utilizzo di cookie non attendibili su un gestore di finestre non compositing come i3 o openbox potrebbe essere salvato. Compositing window managers rispettivi desktop con effetti 3D come Gnome o KDE possono memorizzare il contenuto della finestra nella memoria video anche se l'applicazione stessa non lo fa. Non sono sicuro che X stesso possa utilizzare la RAM video in casi non precostituiti qui.

This only happens on local X servers, not over ssh

Afaik, ssh usa sempre i cookie non fidati.

How do I feasibly mitigate or eliminate the risk of disclosing the information contained in these remnant buffers?

Non utilizzare mai la GPU ( sospiro ). Urla agli sviluppatori Scrivi una segnalazione di errore. Non visualizza pron in chrome in modalità navigazione in incognito .

La RAM video sopravvive persino a un riavvio da un sistema all'altro.

L'unico vero metodo sicuro potrebbe essere disabilitare la GPU a livello di kernel.

Da un punto di vista della sicurezza, il driver dovrebbe azzerare la memoria video immediatamente dopo la deallocazione , poiché è possibile accedere alla memoria video senza utilizzare il driver e anche dopo il riavvio. Almeno dovrebbe azzerare la memoria video quando allocata. Nessuno dei due è finito.

Alcune applicazioni possono avere problemi con i cookie non attendibili. C'è anche la possibilità di disabilitare l'estensione OpenGL / GLX nel server X. (Si prega di considerare che questo non ha alcun effetto per i compositori Wayland come la sessione di Gnome 3 Wayland).

Crea un file:

/etc/X11/xorg.conf.d/disable-gpu.conf

con il contenuto:

Section "Extensions"
    Option "GLX" "Disable"
EndSection

Invece di questa configurazione xorg.conf permanente puoi eseguire X una volta sola con GLX disabilitato. Avvia X da tty2 con untrusted . (Imposta startx -- -extension GLX vt2 in N al numero del tty).

    
risposta data 07.06.2017 - 02:20
fonte

Leggi altre domande sui tag