Qualsiasi applicazione avviata da sotto l'utente corrente ha accesso alla tastiera, al mouse, al display (ad es. catturando uno screenshot) e questo non va bene.
Tutti i client X11 su un desktop possono accedere l'un l'altro in modo approfondito, incluso ottenere il contenuto di qualsiasi finestra, modificarlo, chiudere qualsiasi finestra, falsificare eventi di tasti e mouse a qualsiasi altro client, acquisire qualsiasi dispositivo di input, ecc.
Il design del protocollo X11 si basa sull'idea che i client siano tutti AFFIDABILI e collaboreranno, senza calpestarsi a vicenda (quest'ultimo completamente rotto da app moderne come Firefox, Chrome o Java).
MA, se installiamo programmi dal repository ufficiale (ad esempio, per Debian), che è improbabile che contengano keylogger, ecc., Allora il problema del pericolo è chiaramente esagerato. Mi sbaglio?
I programmi hanno bug, che possono essere sfruttati. Il server e le librerie X11 potrebbero non essere aggiornati. Ad esempio, qualsiasi client X11 può bloccarsi il server X nell'attuale versione di Debian (Buster 10) tramite innocue richieste Xkb. (Questo è stato risolto nei sorgenti originali, ma non è stato ancora realizzato in Debian). Se è in grado di bloccarlo, allora c'è qualche probabilità che sia anche in grado di eseguire codice con i privilegi del server X11 (accesso all'hardware, ecc.).
Per i problemi con l'autenticazione lassista in Xwayland (e il normale Xorg Xserver in Debian), vedere le note alla fine di questa risposta.
Sì, puoi aprire applicazioni su server separati (ad esempio Xephyr), ma questo è scomodo, poiché non ci sono appunti condivisi. Anche la creazione di appunti basati su file tmp è scomoda.
Nota che, a meno che tu non esegua ulteriori passaggi, Xephyr
consente qualsiasi utente locale per connettersi ad esso per impostazione predefinita. Vedi questo per una discussione al riguardo.
La creazione di una clipboard condivisa tra più server X11 è un problema interessante, che merita domande e risposte, piuttosto che mescolarsi con questo.
Le applicazioni in esecuzione sulla stessa macchina con lo stesso account utente possono utilizzare il ptrace
chiamata di sistema per modificare la memoria dei processi reciproci, quindi X11 non è la superficie di attacco più conveniente qui.
Per le applicazioni di cui non ti fidi completamente, devi prima eseguirle con un ID utente diverso (come fa Android con applicazioni di fornitori diversi) e puoi utilizzare l'estensione XSECURITY per generare un token di accesso "non attendibile" per il server X , con cui l'accesso dell'applicazione a X11 è limitato:
- nessun accesso agli eventi di input non diretti alla propria finestra
- nessun accesso all'estensione XTEST
- nessuna finestra trasparente
Gli eventi di input in X11 hanno un Synthetic
campo che indica se l'evento di input è stato generato da un dispositivo di input o inviato da un altro programma e il programma ricevente decide cosa fare con gli eventi sintetici, ad esempio xterm
semplicemente li ignora. L'estensione XTEST consente di generare non-Synthetic
eventi dal software a scopo di test, motivo per cui i client non attendibili non sono autorizzati a utilizzare tale estensione.