Hah, interessante. Ho appena provato questo su una console e hai ragione:
unprivileged $ echo "ABABABABABAB" > /dev/fb0
(scrive alcuni pixel nell'angolo in alto a sinistra dello schermo)
unprivileged $ dd if=/dev/fb0 of=read_fb.dat bs=12 count=1
unprivileged $ cat read_fb.dat
ABABABABABAB
Quindi un utente non privilegiato può scrivere e leggere dal framebuffer. Non ha funzionato sotto il mio server X perché non l'ho configurato per usare il framebuffer, ma potrebbe funzionare se ho cambiato la mia configurazione (quindi di nuovo, dato che X non ha isolamento per parlare e un'applicazione può ascoltare in qualsiasi un altro (inclusi movimenti del mouse e tratti chiave), questo non aggiunge nulla alla superficie di attacco se stai correndo con X - Wayland dovrebbe renderlo migliore).
Quindi, se sono riuscito a far sì che un utente ignaro eseguisse un programma che leggesse lo schermo, avrei potuto ottenere i suoi piani per il dominio del mondo (o le parti di esso
che sono comunque visibili sullo schermo):
$ cat my-secret-plan-for-world-domination.txt
$ ...
$ program-which-reads-screen
O ancora peggio:
unprivileged $ sudo /bin/bash
root $ output-some-privileged-information-to-screen
root $ exit
unprivileged $ program-which-reads-screen
Ma se ci pensi, questo non è molto sorprendente, perché ogni volta che fai uno screenshot, stai facendo lo stesso (su Linux, una ricerca rapida rivela fbgrab che cattura uno screenshot usando il framebuffer). Quindi direi che qualsiasi sistema operativo che ti permetta di installare programmi in grado di acquisire schermate a schermo intero ha gli stessi problemi.
La cosa di cui essere consapevole, penso, è che qualcuno potrebbe installare uno screen recorder a tua insaputa, il che registrerebbe quindi l'intera sessione, anche se non stai correndo sotto X e non te lo aspetti. È il pendant di uno scenario di keylogging.
In Qubes OS, il framebuffer è gestito da dom0, quindi presumo che gli altri vms non possano accedere a tutto lo schermo, ma solo alla parte di esso che visualizza le loro finestre. Ciò significa comunque che le applicazioni in esecuzione nella stessa VM possono spiare l'una sull'altra, ma non sull'output generato in un'altra VM e solo un processo dom0 può registrare l'intero schermo.