Fondamentalmente qualsiasi processo che può connettersi con successo a un server X11 ha pieno accesso a ciò che accade su quel server. Il modello di sicurezza X11 presuppone che gli aggressori vengano rifiutati al momento della connessione. Il solito sistema di sicurezza è che i client devono inviare uno specifico "magic cookie" come parte del loro primo messaggio, il cookie è un blob casuale che viene creato all'avvio del server o come parte della procedura di accesso; il cookie viene anche copiato in una posizione accessibile solo alle applicazioni "consentite". Sui sistemi Unix-like, il cookie è tradizionalmente nel file $HOME/.Xauthority
, ma potrebbe essere altrove (sul mio recente sistema Linux, sembra essere da qualche parte in una sottodirectory di /var/run/gdm/
), il punto è che il file è leggibile solo per un singolo utente Unix. Quando si inoltrano le connessioni X11, SSH utilizza il comando xauth
per trasferire in modo trasparente il cookie corrente dal client al server (in modo che le applicazioni avviate sull'host remoto possano inviare il cookie quando si connettono).
Quindi esiste l'isolamento con X11 - ma è tra gli utenti (come controllati dal sistema operativo), non tra le applicazioni eseguite per conto dello stesso utente.
Nei vecchi tempi, i cookie magici non erano molto comuni, quindi alcune applicazioni (in particolare xterm) includevano contromisure come il rifiuto di eventi sintetici (cioè eventi derivanti da un XSendEvent()
chiamato, al contrario di eventi provenienti dall'hardware). Tali misure erano prima di molte delle estensioni che sono cresciute sul protocollo X11 nel corso degli anni, come XTest, che le rende per lo più obsolete e inutili.
Qubes è un sistema operativo che si basa su Xen per isolare alcune applicazioni l'una dall'altra - ogni VM ha il suo display esclusivo, senza interazioni possibili con i server X11 di altre VM. Ho difficoltà a leggere "Beta 1" e "sicuro" nella stessa frase, anche se ...
Per la parte X11, lo stesso tipo di isolamento esiste da molti anni come Xnest (con un successore aggiornato chiamato Xephyr ): si esegue l'applicazione potenzialmente malvagia sotto uno specifico ID utente isolato e si connette solo a un'istanza Xephyr che si collega al server X11 principale come se fosse una semplice applicazione. Per eludere tale isolamento, l'applicazione dovrebbe dirottare Xephyr (ad esempio attraverso un overflow del buffer). La soluzione di Qubes è solo più approfondita in quanto sostituisce l'isolamento di base Unix ("ID utente distinto") con uno strato VM molto più massiccio.
Wayland non sembra fare pubblicità sull'isolamento, quindi è una scommessa sicura che non fa nulla a tale riguardo. Inoltre, Wayland cerca di fornire l'accesso hardware quasi diretto alle applicazioni quando possibile, quindi qualsiasi modello di sicurezza in quella situazione sarebbe relativo a come l'hardware 3D non documentato e il driver closed-source collaborano per evitare un trasferimento DMA mal riposto per ottenere diritti extra - questo non sembra il modo migliore per creare sicurezza.