X11 опасен?

С помощью tr(, если вы хотите сделать это глобально во всем файле):

tr "'" '"' <infile >outfile

Делать

sed 's/'/"/'

В основном у вас есть sed 's/', за которым следует /"/', который представляет собой косую черту и незакрытую строку в двойных кавычках.

С

sed s/\'/\"/

у вас нет такой проблемы.

Если вам удобнее процитировать sedвыражение (в данном случае оно не нужно ), сделайте

sed 's/'"'"'/"/'

Это sed 's/', за которым следует"'"(двойная одинарная кавычка ), за которой следует '/"/'.

Также обратите внимание, что если вы хотите эмулировать trв sed, то есть если вы хотите выполнять транслитерацию отдельных символов, то использование y///будет гораздо более эффективным, чем использованиеs///g(примечания. там /gтам):

sed y/\'/\"/
25
24.03.2020, 21:40
2 ответа

Any application launched from under the current user has access to the keyboard, mouse, display (e.g. taking a screenshot), and this is not good.

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

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

BUT, if we install programs from the official repository (for example, for Debian), which are unlikely to contain keyloggers, etc., then the danger problem is clearly exaggerated. Am I wrong?

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

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

Yes, you can open applications on separate servers (for example, Xephyr), but this is inconvenient, since there is no shared clipboard. Creating a clipboard based on tmp files is also inconvenient.

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

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

43
28.04.2021, 23:19

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

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

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

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

9
28.04.2021, 23:19

Теги

Похожие вопросы