Опасен ли X11?

Опасен ли X11?

Я новичок в X11 и хочу понять, действительно ли он так опасен, как пишут в Интернете.

Я объясню, как я это понимаю. Любое приложение, запущенное из-под текущего пользователя, имеет доступ к клавиатуре, мыши, дисплею (например, сделать снимок экрана), и это не есть хорошо. Но, если мы устанавливаем программы из официального репозитория(например, для Debian), которые вряд ли содержат кейлоггеры и т. п., то опасность кажется преувеличенной. Я не прав?

Да, вы можете открывать приложения на отдельных серверах.(например, Ксефир), но это неудобно, так как нет общего буфера обмена. Создание буфера обмена на основе tmp-файлов также неудобно.

решение1

Любое приложение, запущенное из-под текущего пользователя, имеет доступ к клавиатуре, мыши, дисплею (например, создание снимка экрана), и это не есть хорошо.

Все клиенты X11 на рабочем столе могут осуществлять глубокий доступ друг к другу, включая получение содержимого любого окна, его изменение, закрытие любого окна, имитацию событий клавиш и мыши для любого другого клиента, захват любого устройства ввода и т. д.

В основе протокола X11 лежит идея о том, что все клиенты ДОВЕРЯЮТ друг другу и будут сотрудничать, а не наступать друг другу на пятки (последнее полностью нарушается современными приложениями, такими как Firefox, Chrome или Java).

НО, если мы устанавливаем программы из официального репозитория (например для Debian), которые вряд ли содержат кейлоггеры и т. п., то опасность проблемы явно преувеличена. Я не прав?

Программы имеют ошибки, которые могут быть использованы. Сервер и библиотеки X11 могут быть неактуальными. Например, любой клиент X11 можеткрушениеX-сервер в текущей версии Debian (Buster 10) через безобидные запросы Xkb. (Это былозафиксированныйв исходниках upstream, но пока не попал в Debian). Если он способен вызвать сбой, то есть некоторая вероятность, что он также способен выполнить код с привилегиями сервера X11 (доступ к оборудованию и т. д.).

О проблемах с нестрогой аутентификацией в Xwayland (и обычном Xorg Xserver в Debian) см. примечания в концеэтот ответ.

Да, можно открывать приложения на отдельных серверах (например, Xephyr), но это неудобно, так как нет общего буфера обмена. Создание буфера обмена на основе tmp-файлов также неудобно.

Обратите внимание, что если вы не предпримете дополнительных шагов, Xephyrпозволяетлюбой локальный пользовательдля подключения к нему по умолчанию. Смотретьэтотдля обсуждения этого вопроса.

Создание общего буфера обмена между несколькими серверами X11 — интересная проблема, которая заслуживает собственного вопроса и ответа, а не смешивается с этим.

решение2

Приложения, работающие на одном компьютере с одной и той же учетной записью пользователя, могут использовать ptraceсистемный вызов для изменения памяти процессов друг друга, поэтому X11 в данном случае не является самой удобной поверхностью для атаки.

Для приложений, которым вы не полностью доверяете, вам необходимо сначала запустить их с другим идентификатором пользователя (как это делает Android с приложениями от разных поставщиков), и вы можете использовать расширение XSECURITY для генерации «недоверенного» токена доступа для X-сервера, с помощью которого доступ приложения к X11 будет ограничен:

  • нет доступа к входным событиям, не направленным на собственное окно
  • нет доступа к расширению XTEST
  • нет прозрачных окон

События ввода в X11 имеют Syntheticполе, которое сообщает, было ли событие ввода сгенерировано с устройства ввода или отправлено из другой программы, и принимающая программа решает, что делать с синтетическими событиями, например, xtermпросто игнорирует их. Расширение XTEST позволяет генерировать не- Syntheticсобытия из программного обеспечения для целей тестирования, поэтому ненадежным клиентам не разрешено использовать это расширение.

Связанный контент