GNU/Linux >> Linux Esercitazione >  >> Linux

X11 è pericoloso?

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.


Linux
  1. Python any() Funzione in Linux

  2. iconv qualsiasi codifica in UTF-8

  3. Qualche esperienza Java su Raspberry PI?

  4. Sudo vs radice; differenze effettive?

  5. Ci sono GUI per Linux che non usano X11?

Contratto minimo

Registra qualsiasi comando simile a `time`?

Utilità di deframmentazione Ext3?

Nessuna variabile DISPLAY X11 - cosa significa?

Cosa fa CAP_NET_RAW?

Quando è pericoloso fsck?