Je suis nouveau à X11 et je veux comprendre s'il est vraiment aussi dangereux qu'ils disent sur Internet.
Je vais expliquer comment je comprends ça. Toute application lancée sous l'utilisateur actuel a accès au clavier, à la souris, à l'affichage (par exemple, prenant une capture d'écran), et ce n'est pas bon. Mais, si nous installions des programmes du référentiel officiel ((par exemple pour Debian), il est peu probable que cela ne puisse contenir de Keyloggers, etc., alors le danger semble exagéré. Ai-je tort?
Oui, vous pouvez ouvrir des applications sur des serveurs distincts ((((par exemple, Xephyr), mais c'est gênant, car il n'y a pas de presse-papiers partagés. La création d'un presse-papier basé sur les fichiers TMP est également gênant.
Toute application lancée sous l'utilisateur actuel a accès au clavier, à la souris, à l'affichage (par exemple, prenant une capture d'écran), et ce n'est pas bon.
Tous les clients X11 sur un bureau peuvent accéder à la profondeur, y compris obtenir le contenu de n'importe quelle fenêtre, la modifier, la fermeture de n'importe quelle fenêtre, une clé de simulation et des événements de souris sur tout autre client, en saisissant tout dispositif d'entrée, etc.
La conception du Protocole X11 est basée sur l'idée que les clients sont tous de confiance et collaboreront, pas sur les orteils de l'autre (ce dernier complètement brisé par des applications modernes telles que Firefox, Chrome ou Java).
Mais si nous installions des programmes du référentiel officiel (par exemple, de Debian), il est peu probable que les Keyloggers, etc., le problème de danger est clairement exagéré. Ai-je tort?
Les programmes ont des bugs, qui peuvent être exploités. Le serveur et les bibliothèques X11 ne peuvent pas être à jour. Par exemple, tout client X11 peut Crash le serveur X dans la version actuelle de Debian (Buster 10) via des demandes XKB innocentes. (C'était fixe dans les sources amont, mais ne l'a pas encore réussi à Debian). Si cela est capable de l'écraser, il y a une probabilité de probabilité qu'il est également capable d'exécuter du code avec les privilèges du serveur X11 (accès au matériel, etc.).
Pour les problèmes avec l'authentification LAX dans Xwayland (et le Xorg XServer régulier de Debian), voir les notes de la fin de cette réponse .
Oui, vous pouvez ouvrir des applications sur des serveurs distincts (par exemple, Xephyr), mais cela n'est pas pratique, car il n'y a pas de presse-papiers partagé. La création d'un presse-papier basé sur les fichiers TMP est également gênant.
Notez que si vous prenez des étapes supplémentaires, Xephyr
permet tout utilisateur local de vous connecter par défaut. Voir Ceci pour une discussion à ce sujet.
Créer un presse-papiers partagé entre plusieurs serveurs X11 est un problème intéressant qui mérite son propre Q & A, plutôt que mélangé avec cela.
Les applications exécutées sur la même machine avec le même compte d'utilisateur peuvent utiliser l'appel système ptrace
pour modifier la mémoire de processus de chacun, de sorte que X11 n'est pas la surface d'attaque la plus pratique ici.
Pour les applications, vous n'avez pas pleinement confiance, vous devez d'abord les exécuter avec un identifiant d'utilisateur différent (comme Android===== avec des applications de différents fournisseurs) et vous pouvez utiliser l'extension XSecurity pour générer un Jeton d'accès "non soigné" pour le serveur X, avec lequel l'accès de l'application à X11 est restreint:
Les événements d'entrée en X11 ont un champ Synthetic
qui indique si l'événement d'entrée a été généré à partir d'un périphérique d'entrée ou envoyé à partir d'un autre programme, et le programme de réception décide de faire avec des événements synthétiques, par exemple xterm
juste les ignore. L'extension XTEST permet de générer des événements non -Synthetic
d'événements de logiciels à des fins de test, ce qui est pourquoi les clients non approuvés ne sont pas autorisés à utiliser cette extension.