Ist X11 gefährlich?

Ist X11 gefährlich?

Ich bin neu bei X11 und möchte verstehen, ob es wirklich so gefährlich ist, wie sie im Internet sagen.

Ich werde erklären, wie ich das verstehe. Jede Anwendung, die unter dem aktuellen Benutzer gestartet wird, hat Zugriff auf Tastatur, Maus und Display (z. B. beim Erstellen eines Screenshots), und das ist nicht gut. Wenn wir jedoch Programme aus dem offiziellen Repository installieren(zum Beispiel für Debian), die wahrscheinlich keine Keylogger usw. enthalten, dann erscheint die Gefahr übertrieben. Liege ich falsch?

Ja, Sie können Anwendungen auf separaten Servern öffnen(zum Beispiel Xephyr), aber das ist unpraktisch, da es keine gemeinsame Zwischenablage gibt. Das Erstellen einer Zwischenablage basierend auf temporären Dateien ist ebenfalls unpraktisch.

Antwort1

Jede vom aktuellen Benutzer gestartete Anwendung hat Zugriff auf Tastatur, Maus und Display (z. B. beim Erstellen eines Screenshots), und das ist nicht gut.

Alle X11-Clients auf einem Desktop können umfassend aufeinander zugreifen. Sie können beispielsweise den Inhalt beliebiger Fenster abrufen, ändern, beliebige Fenster schließen, Tasten- und Mausereignisse für andere Clients vortäuschen, beliebige Eingabegeräte erfassen usw.

Das Design des X11-Protokolls basiert auf der Idee, dass alle Clients VERTRAUENSWÜRDIG sind und zusammenarbeiten, statt sich gegenseitig in die Quere zu kommen (letzteres wird durch moderne Apps wie Firefox, Chrome oder Java völlig außer Kraft gesetzt).

ABER, wenn wir Programme aus dem offiziellen Repository (zum Beispiel für Debian) installieren, die wahrscheinlich keine Keylogger usw. enthalten, dann ist das Gefahrenproblem deutlich übertrieben. Liege ich falsch?

Programme haben Fehler, die ausgenutzt werden können. Der X11-Server und die Bibliotheken sind möglicherweise nicht auf dem neuesten Stand. Beispielsweise kann jeder X11-ClientAbsturzder X-Server in der aktuellen Version von Debian (Buster 10) über harmlose Xkb-Anfragen. (Das warFestin den Upstream-Quellen, hat es aber noch nicht in Debian geschafft). Wenn es zum Absturz bringen kann, besteht eine gewisse Wahrscheinlichkeit, dass es auch Code mit den Privilegien des X11-Servers ausführen kann (Zugriff auf die Hardware usw.).

Zu den Problemen mit der laxen Authentifizierung in Xwayland (und dem regulären Xorg Xserver in Debian) siehe die Hinweise am Ende vondiese Antwort.

Ja, Sie können Anwendungen auf separaten Servern öffnen (z. B. Xephyr), dies ist jedoch umständlich, da keine gemeinsame Zwischenablage vorhanden ist. Das Erstellen einer Zwischenablage basierend auf temporären Dateien ist ebenfalls umständlich.

XephyrBeachten Sie , dass, wenn Sie keine zusätzlichen Schritte unternehmen,jeder lokale Benutzerum standardmäßig eine Verbindung herzustellen. SieheDasfür eine Diskussion darüber.

Das Erstellen einer gemeinsamen Zwischenablage zwischen mehreren X11-Servern ist ein interessantes Problem, das seine eigenen Fragen und Antworten verdient und nicht mit diesem vermischt wird.

Antwort2

Anwendungen, die auf derselben Maschine mit demselben Benutzerkonto ausgeführt werden, können den ptraceSystemaufruf verwenden, um den Prozessspeicher des jeweils anderen zu ändern. Daher ist X11 hier nicht die bequemste Angriffsfläche.

Bei Anwendungen, denen Sie nicht vollständig vertrauen, müssen Sie diese zunächst mit einer anderen Benutzerkennung ausführen (so wie es Android mit Anwendungen von anderen Anbietern macht) und Sie können die Erweiterung XSECURITY verwenden, um ein „nicht vertrauenswürdiges“ Zugriffstoken für den X-Server zu generieren, mit dem der Zugriff der Anwendung auf X11 eingeschränkt wird:

  • kein Zugriff auf Eingabeereignisse, die nicht an das eigene Fenster gerichtet sind
  • kein Zugriff auf die XTEST-Erweiterung
  • keine transparenten Fenster

Eingabeereignisse in X11 haben ein SyntheticFeld, das angibt, ob das Eingabeereignis von einem Eingabegerät generiert oder von einem anderen Programm gesendet wurde, und das empfangende Programm entscheidet, was mit synthetischen Ereignissen zu tun ist, beispielsweise xtermignoriert es sie einfach. Die XTEST-Erweiterung ermöglicht das Generieren von Nicht- SyntheticEreignissen aus Software zu Testzwecken, weshalb nicht vertrauenswürdigen Clients die Verwendung dieser Erweiterung nicht gestattet ist.

verwandte Informationen